SmartBot now prefers plays over hints, during the endgame.

On the "easiest possible" deck, SmartBot was leaving a point on the table
by preferring maybeGiveValuableHint() over maybePlayLowestCard() at one
point near the end of the game. When we're definitely in the endgame, it
doesn't make sense to give a hint (maybe scoring a point) in preference
to playing one's own lowest card (definitely scoring a point).

This boosts SmartBot's average score by 0.07 ppg.
SmartBot's current win percentage is 6.7-% perfect, and I've added that
information to the README for quick reference going forward.
SmartBot no longer stupidly ignores "hint stone reclaim" hints.

SmartBot had to come up with a rule for what hint to give when it had no
obvious play, but couldn't discard because all the hint stones were already
available. The rule was "Hint to the player on your right about his oldest
card." Everyone at the table could see when such a situation came up, and
in that case they wouldn't read too much into the hint. However, they
overcompensated by just ignoring the hint completely. Oops!

Now SmartBot correctly observes the information given by such a hint: cards
such-and-such have such-and-such a value, and the other cards in the hintee's
hand do *not* have that value. That's a pretty significant amount of
information that was just being lost before this patch!

This boosts SmartBot's average score by 0.09 ppg and its win percentage
by 0.5%. This is a much more significant gain than I'd have expected,
and probably implies that SmartBot is doing much more "hint stone reclaim"
than it really ought to be doing.

Also, remove some useless code (setting isPlayable on a knol that update()
would already deduce to be playable anyway).