Improved RangedNumberGenerator robustness for heterogeneous requests

In scenarios with multiple heterogeneous RangedNumberRequests,

 1. a request can be of type System.Byte
 2. the next request can be of a type with maximum value greater than System.Byte.MaxValue
 3. and then, the next request can be (again) of type System.Byte – *then* the RangedNumberGenerator state *could* be greater than System.Byte.MaxValue and a System.OverflowException was thrown, as reported in #295.
Another option is to, well, try to deal with the various boundary cases and try to keep the current algorithm.

I prefer the first option, if it works for the scenarios where RangedNumberGenerator is required. It requires more work but the end result will be less code and increased robustness.