Implement Randomize() operation on mixed strategy/behavior profiles.

This refactors operations previously implemented in liap and simpdiv,
which purported to generate mixed profiles which are uniformly
distributed over the product of simplexes.

These are now provided as Randomize() operations on profiles.  They
come in two flavors: one (for double-precision only) which generates
continuous uniform randomization, and one which selects profiles from
a uniform grid with a given spacing.

Although randomization was implemented in various ways previously,
none of them were correct in delivering uniformly-distributed profiles.
These implementations do so correctly, at least up to the ability of
the underlying std::rand() to deliver uniform values.  When C++11
support is implemented, it will be possible to enhance this further
with more robust support to ensure uniformity, although in practice this
is not likely to make much of a difference as Gambit's current uses for
generating random profiles do not depend on the profiles being
precisely uniformly distributed.