Make SmartBot a little smarter about misinformative hints.

SmartBot is no longer scared of giving a value hint where the hinted
cards include a card whose color is unknown but which (assuming it has
the given value) cannot possibly be playable.

This boosts SmartBot's average score by less than 0.01 ppg.
SmartBot's current win percentage is 6.4% perfect.
Implement option --seed.

As in, "./run_CheatBot --seed 42", to get a reproducible
series of games by seeding the random number generator.
Add logging for the state of the piles.

This makes it easier to see at a glance what cards are
currently playable, from any given position in a game log.
Refactor CheatBot a little; allow it to use mulligans.

If CheatBot REALLY wants to discard a card, and doesn't have any
hint stones to reclaim, we can let it use the first two mulligans.
This logic needs more work before it'll be of any significant use.

This boosts CheatBot's win percentage from 96.82 to 96.83 percent:
an insignificant amount.
Add the option --deck, for stacking the deck (from a file).

    ./run_CheatBot --deck < tough-deck.txt

will run a single game, using the deck provided.
The deck file must contain 50 whitespace-separated strings of the
form [number][colorcode], e.g. "1r" or "3o". Acceptable color codes
are "roygb". The deck file must contain the proper counts of each card.
The first card in the file is considered to be the top card of the draw
pile; i.e., the cards are listed in the order they will be drawn during
the game.

A deck starting with "5r 5o 5y 5g 5b 4r 4r 4o 4o 4y 4y ..." would be
very hard (CheatBot currently gets 13 points on that deck). A deck
starting with "1r 1o 1y 1g 1b 2r 2o 2y 2g 2b 3r 3o ..." would be almost
trivial (CheatBot gets 25 points on that deck, of course).