The piece's occupied paths are no longer kept as state, but rather generated as needed.
Using PartialFunction to create Castle and Promotion instances.
Moved movesFor to Move.moves.