Take risks near the end of the game.

This heuristic needs a lot of work, but the basic idea is that
if we're resigned to discarding a card anyway, maybe we should
just play some unknown card and see what happens. Maybe it'll
turn out to be playable, and we'll gain a point!

On the other hand, maybe we want to discard in order to get a
hint-stone back, in which case this is just getting in the way
of our usual strategy.

This patch bumps HolmesBot's average score from 19.23 to 19.26.
Remove dead code from HolmesBot.

HolmesBot::makeThisValueWorthless() is no longer needed, now that
that sort of deduction is being performed at the start of every
turn.

No change in behavior.
Improve HolmesBot's deductive skills again: from 19.26 to 19.33.

HolmesBot had amazingly NOT yet been inferring negatives; for
example, if Alice tells Bob that his newest card is yellow,
then Bob also knows that none of his other cards are yellow
(and therefore might be able to deduce something about their
actual color).

This boosts HolmesBot's average score from 19.26 to 19.33.
Improve HolmesBot's granularity.

Rather than keeping track of "can this card be color K" and "can this
card be value V" in separate arrays, it makes more mathematical sense
to keep track of the single question "can this card be K,V" in a
two-dimensional array. This allows a very slightly finer granularity
of deduction; for example, maybe a certain card could be either the
red 2 or the green 3, and therefore must be playable; whereas merely
knowing that the card was "red or green, and 2 or 3" would not have
allowed for the same deduction.

This boosts HolmesBot's average score from 19.33 to 19.34; hardly
worth mentioning, yet.
Replace CheatBot's "rescue" heuristic with a better rule.

The better rule is: If there are absolutely no playable cards visible,
then you MUST discard a worthless card (if possible) in order to cycle
new cards into play. Temporizing at that point is counter-productive,
as it does nothing but reduce the number of hint-stones.

After implementing this rule, it turned out that CheatBot's old rule
"Attempt to rescue the player to your left if he has nothing to play"
caused more harm than help, so I've gotten rid of it.

This patch improves CheatBot's average score from 24.50 to 24.67.
In about 77.4 percent of those games, CheatBot achieves a perfect 25.

The "temporize early" heuristic still helps quite a bit, unfortunately,
so I've kept it. (Setting shouldTemporizeEarly to FALSE results in an
average score of only 24.29, and only 39.6 percent of those games are
perfect. Always TRUE results in 24.56, 72.1 percent perfect.)
Work in progress: HolmesBot. TODO fixme