Many improvements to the enpassant move processing

 - Fixed a bug in makeCore related to castling moves
 - Fixed a bug in the testing of enpassant moves and how they
   affect the half move clock
 - Should have been using the standard b.parsePosition(EmptySurface)
   to reset a board instead of b = Board() as there is no circular
   reference issues here
 - Fixed a bug in isMoveValid related to verifying the shape of
   enpassant capture moves
 - Fixed a bug in isMoveValid related to verifying the destination
   piece for enpassant capture moves
 - Improved isMoveValid's checking of the accuracy of the destination
   square for enpassant capture moves