New features:
* **Experimental XBoard engine support.** Thanks to Manik Charan and
Cash Costello. Expect breaking changes in future releases.
* Added an undocumented `chess.polyglot.ZobristHasher` to make Zobrist hashing
easier to extend.
Bugfixes:
* Merely pseudo-legal en passant does no longer count for repetitions.
* Fixed repetition detection in Three-Check and Crazyhouse. (Previously
check counters and pockets were ignored.)
* Checking moves in Three-Check are now considered as irreversible by
`ThreeCheckBoard.is_irreversible()`.
* `chess.Move.from_uci("")` was raising `IndexError` instead of `ValueError`.
Thanks Jonny Balls.
Changes:
* `chess.syzygy.Tablebases` constructor no longer supports directly opening
a directory. Use `chess.syzygy.open_tablebases()`.
* `chess.gaviota.PythonTablebases` and `NativeTablebases` constructors
no longer support directly opening a directory.
Use `chess.gaviota.open_tablebases()`.
* `chess.Board` instances are now compared by the position they represent,
not by exact match of the internal data structures (or even move history).
* Relaxed castling right validation in Chess960: Kings/rooks of opposing sites
are no longer required to be on the same file.
* Removed misnamed `Piece.__unicode__()` and `BaseBoard.__unicode__()`. Use
`Piece.unicode_symbol()` and `BaseBoard.unicode()` instead.
* Changed `chess.SquareSet.__repr__()`.
* Support `[Variant "normal"]` in PGNs.
* `pip install python-chess[engine]` instead of `python-chess[uci]` (since
the extra dependencies are required for both UCI and XBoard engines).
* Mixed documentation fixes and improvements.