Improve the contract on Surface
Improved the testing of Surface
Add FEN deserialization

The following code can now be used to translate a valid FEN string into a Board object

  Board result;
  if(tryParseFen("fen string", result, fullMoveNumber))
  {
    // use the board 'result' here
  }

The following changes in this commit implement the above functionality
 - Added isSet to Bitboard (determine if a bit is set)
 - Standardized the imports for compilation of unit test mode
 - Added a deserialization of Coordinate
 - Improved the serialization of Move using %t formatting to show exactly
   what type of castling move is being performed
 - Added indexing to Board
 - Added tryParseFen to Board