Enabled `Codable` conformance for all public types (except `Board`).
This allows objects derived from `ChessKit` to be encoded/decoded for
storage or network transmission.
#### `Board` conformance to Codable
`Board` conformance will be enabled once `BoardDelegate` is removed
completely. Until then, `Board.position` and `Board.state` can be
encoded/decoded instead as a reasonable proxy.
> [!note]
Using `position`/`state` alone will lack the position count information
used to calculate threefold repetition.
* Passing in `.minimum` to `MoveTree.fullVariation(for:)` returned an
empty array even if there were valid moves in the move tree.
* If this value is passed, it will use the first valid index
(`.minimum.next`) to calculate the moves contained in the variation.