public IBoard PlacePiece(Intersection intersection, Piece p)
{
var newSettlements = new Dictionary<Intersection, Piece>(settlements);
newSettlements[intersection] = p;
return new Board(terrain, new Dictionary<Edge, int>(roads), newSettlements, robberLocation, harbors, allIntersections, allEdges);
}