Implement explicit copy operation for strategy profiles.
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.