Switch to record representation for `Random` and try to clarify the names of the things it can do.

I also made the field types in `Generator` explicit because it will
look nicer when docs are properly generated.