Add more test
Move getLegalMove from Piece implementations to abstract Piece
Fix undo move