fixed demo
added moveByNumber() tests
added move() exception tests
added moveByDirection() tests
added _moveByPiece() tests
centralized canMove logic for all move methods, introduced _getMoveByPiece() and _canMoveByMove(), added _moveByMove() tests