Bugfixes:
* `pin_mask()`, `pin()` and `is_pinned()` make more sense when already
in check. Thanks to Ferdinand Mosca.
New features:
* **Variant support: Suicide, Giveaway, Atomic, King of the Hill, Racing Kings,
Horde, Three-check, Crazyhouse.** `chess.Move` now supports drops.
* More fine grained dependencies. Use *pip install python-chess[uci,gaviota]* to
install dependencies for the full feature set.
* Added `chess.STATUS_EMPTY` and `chess.STATUS_ILLEGAL_CHECK`.
* The `board.promoted` mask keeps track of promoted pieces.
* Optionally copy boards without the move stack: `board.copy(stack=False)`.
* `examples/bratko_kopec` now supports avoid move (am), variants and
displays fractional scores immidiately. Thanks to Daniel Dugovic.
* `perft.py` rewritten with multi-threading support and moved to
`examples/perft`.
* `chess.syzygy.dependencies()`, `chess.syzygy.all_dependencies()` to generate
Syzygy tablebase dependencies.
Changes:
* **Endgame tablebase probing (Syzygy, Gaviota):** `probe_wdl()` **,**
`probe_dtz()` **and** `probe_dtm()` **now raise** `KeyError` **or**
`MissingTableError` **instead of returning** *None*. If you prefer getting
`None` in case of an error use `get_wdl()`, `get_dtz()` and `get_dtm()`.
* `chess.pgn.BaseVisitor.result()` returns `True` by default and is no longer
used by `chess.pgn.read_game()` if no game was found.
* Non-fast-forward update of the Git repository to reduce size (old binary
test assets removed).
* `board.pop()` now uses a boardstate stack to undo moves.
* `uci.engine.position()` will send the move history only until the latest
zeroing move.
* Optimize `board.clean_castling_rights()` and micro-optimizations improving
PGN parser performance by around 20%.
* Syzygy tables now directly use the endgame name as hash keys.
* Improve test performance (especially on Travis CI).
* Documentation updates and improvements.