MersenneTwister: clean up constructors (#60185)
We had two sets of constructors:
1) user-facing ones, which mimic `show`
(e.g. `MersenneTwister(seed)`, or `MersenneTwister(1, (0, 1002, 0,
1))`),
2) internal ones:
- `MersenneTwister(seed, state, vals, ...)`
- `MersenneTwister(seed, state)`
Internal ones were not practical to use, so they are replaced by a
single `_MersenneTwister(undef)` constructor which prepares an
uninitialized instance, which can then be initialized by `seed!`,
`copy!`, etc.
This commit also makes `const` some internal fields, and replaces
`Vector` with `Memory` for one of them.