chess-polyglot.el: Ship default book file.

Also, move some customisation settings from chess-uci to chess-polyglot.
chess-ai.el: Spare computing time by consulting the opening book.
chess-ics.el: Add guest login support for chess.net.
chess-perft.el: move generator testing.
chess-perft.el: ert tests to find move generator bugs.
chess-legal-plies: Generate R and B promotions in addtion to Q and N.
chess-legal-plies: Stop generating duplicate castling moves.
chess-legal-plies: It is illegal to castle if the king is in check right now.
Add the perft makefile target for easy running of the testsuite.
chess-perft.el: Count en passant and promotion plies.

Also, add ERT tags to selectively run tests which validate a certain
ply property, like :castle or :check.
chess-pos-move: Really remove castling ability if rook has been moved.

This one was *very subtle.  Looking at the code, we already tried
to prevent this case, and it evenw orked for *some* instances.
The problem is that castling flags are boolean in the position
structure, chess-pos-can-castle determines the rook location
from the position if castling flag is true.  But we have
already moved the rook around in chess-pos-move before we
do the fixup stuff, so chess-pos-can-castle is just wrong
in some cases.  Fix is simple, call chess-pos-can-castle
before we modify the position, and use these values
later.  This fixes the remaining perft mixmatches.
chess-perft: Simplify en-passant checks.
Remove obsolete note.
chess-perft: Refactor to avoid repeatedly visiting the same list of plies at depth 1.
Silly typo.
chess-perft: Interactive spec and progress info.
chess-polyglot.el: Docs + one assert.
chess-next-index: A 10x12 mailbox based function for advancing indices.

This one is a lot faster then chess-incr-index.  Casual replacing in some caller
sites yields about 30% performance improvement, more to be gained if more
callers are converted.
chess-pos.el: Define constant lists of directions various pieces can move to.

This avoid useless consing and makes things a bit more reusable.
chess-knight-directions: New constant.