Update of original code for Java 8 (and above) with improved documentation and added tests.
- Default seed initialization is no longer based solely on the system clock.
- Unnecessary calls to "setSeed()" during parent class initialization are now ignored (performance).
- Supports safe serialization (synchronized, with consistency checking).
- Class is now final (best practice)
- Improved documentation.
- Minor code tidying (no functional changes expected).
- Added unit tests and golden data tests.