starts major refactorings for performance - Position, Board, VOs
continues refactoring Move, Position.  deletes Board - code now in Position
updates git urls in package.json
changes fromSquareNo to bySquareNo and corrects epTarget initialisation in Position
adds old Board tests to Position
adds Position tests to test runner
small improvement to calculation in Position.getSquaresBetween
corrects references to position in Position tests
adds getEpTarget and getEpPawn to Position
removes Piece.fromFenString, exposes object directly as byFenString instead
converts Square.forEach to regular loops in tests
switches PieceType.fromSanString() to PieceType.bySanString[]
adds toString to Square - returns algebraic
basic renamings and refactorings to convert to new coding style (fewer getters)
implements getCastlingRights and setCastlingRights in Position; adds isThreefoldRepeatOf
updates castling rights code and merges MoveLabel into Move
removes CastlingRights
removes MoveLabel
carries on updating Game to use new API and improve performance; rewrites isThreefoldClaimable

Note - isThreefoldClaimable no longer bothers checking whether the current
position is the initial position, as it seemed pointless and also more difficult
to implement the new way, but I now realise it would be just as easy so it may
make sense to put it back in at some point.
converts isCheck and isMate to static properties to conform to standard interface in Move

calling code must now call checkCheckAndMate manually to get valid values
for those properties.