Create Game class

Game holds a board and the player whose turn it is. This is part of a plan to
make Board immutable - moves will have to be verified in ways which may be
easier _after_ performing the move on a board, so making boards disposable will
be very useful.
Make Board immutable

#move returns a new board representing the new state
Raise error if there is no piece at the start of a move
Check the piece is the right colour before moving
Ensure piece can move to destination square
First stab at checking for pins

Method to find squares with a given piece, used to find friendly king

Starting to have to use RANK_COUNT in a few places, need to consolidate those.
Add pry

Cheating by debugging :(
Don't allow moves that leave the king in check
Refactor iterating through squares

Maybe worth making it an Enumerator
Make each_square an enumerator
Add test for case where pinned pieces are attacking the king

This case should still be considered a pin
Add state for check
Add rules for checkmate

I'm not sure about the fudge for checking if there is a king at all is a good idea
Add draw state when there are no valid moves
Add spec for all_moves

Starting to wonder if I need a Move object, with a from square, to square, and resulting board