Refactored strict move validation into polymorphism.
Change to use position.getPieceAt() and position.setPieceAt().
Further move validation refactoring.