Hide canonicalization and cached values as implementation detail.

The extensive game representation generates derived values (notably
sets of reduced strategic form strategies), and relies internally on
a numbering of elements of the game (nodes, information sets).

This has previously been imperfectly encapsulated -- historically,
ultimately, for "performance" reasons.  Aside from being questionable
practice, performance is unlikely to be an issue; processors are
much faster now, and the time spent running computations on a game
dominates any time spent building the game.

This changeset hides these implementation details.  This simplifies
the use of the classes externally (and fixes a bug in the Python
interface related to using games which had not been canonicalized).
However, a more complete solution would involve a more sophisticated
implementation which did not require objects to be renumbered in
a canonical way.