This has the advantage that for some ModulusInformation object m and
some modulus,
```
a = m.split(modulus);
m.cast_down(x);
```
is equivalent to
```
m.cast_down(x*modulus);
a = m.split(modulus);
```
This means that when using a ModulusInformation object to answer
questions, we can answer the first question without needing to know how
many questions there are.
"Needing a hint" is defined as having a playable card, but not knowing
any specific card is playable. Thus, if a player doesn't know any
playable cards and someone else discards, the player (publicly)
concludes that all their cards are unplayable.
I think most of the gains of this change come from the fact
that now we don't discard any potentially useful cards if we have more
than 4 hints remaining.
- When there are less than 5 players, and we're near the discard threshold, prefer
hinting over discarding, even if there are known useless cards.
- We now ask questions like "what's the first playable card in this list?"
This means that if a playable card is in the asking player's list,
the player will learn that it's playable, and that every card before
it is not playable.
Additionally, if a player doesn't know of any dead cards in their hand
and there is enough information available, we use this mechanism so that
if the player doesn't have a playable card, they will learn about one
dead card in their hand.
(These were two commits that got joined in a rebase accident, sorry.)