Now tests if king is in check at start and end of each move.

Prevents moves that leave your king in check.
Fixes bugs where check tests could move pieces

Created new deep duplication methods for both Board and Piece classes.
Board simulations no longer affect main board.
Checks double check

in_check? method is now a Board instance method called threats, which
returns an array of pieces that place a king in check.

HumanPlayer print_board method notifies player of threatening pieces.
Trimmed dead code
Adds ChessError classes
Adds some checkmate conditions

Tests if king has no valid moves and is in check. Does not cover
conditions where other pieces can save king.
Adds checkmate check to consider capturing.

Also fixes bug in checkmate's calls to threat.
Refactored obstruction_check into more methods
Refactors obstruction_check

Obstruction_check calls get_path, which now returns array of all
coordinates between points, rather than array of occupied spaces
between points.
Finishes all checkmate conditions
Adds Unicode and recolors board
Refactors piece placement to use 1 method and iteration
Adds Chess960 positions with :random option

Also:
- Only checks checkmate if already in check
- Refactors piece placement