Add support for seedable random number generation (#1537)
* Let there be order amidst the chaos.
* Add random module to docs
* Fix unset seed producing 0
* Support resetting seed by calling `seed()` - no arguments
* Improve default seeding behavior
* Expose `random.Random` class
Review suggestion from @nico-martin
* Strict equality for floating point numbers (64-bit)