Stalemate implementation
Deep refactoring: moving logic from Piece.Type to concrete Piece subclasses for each type of piece.