Add ability to print Board.
Game: #back, #forward, #last changes, #board_at move addition.

Game:

- #back, #forward, and #last all return their corresponding boards now.
- #board_at_move returns a Board at a specific move number but does not
change the state of the game.
BoardCoordinate: More comprehensive tests regarding initialization with square names.
Piece uses CoordinateHelpers

Replace duplicated #impossible_coordinate? method with one from
CoordinateHelpers.
Pawn make starting_ranks and rank_directions available without an instance.

Pawn #starting_rank and and #rank_direction now reference class methods
containing that information. The class methods have been added to make
that information available without having to initialize a Pawn.
BoardCoordinate: Add ability to initialize with a file and rank as separate arguments.
Board#file method.
BoardCoordinate#to_s returns square name instead of coordinates.
BoardCoordinate changes

- Add adjacent_files method.
- Make square_name method simpler.
- Fix file.
- Make initialization tests more comprehensive.
Pawn changes

- Add ability to en passant.
- Make can_take? method public.
- Pass game instead of board to raw_directional_moves (needed for en
passant).