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.
Well, you know the algorithm much better than I do... I'm just asking questions :)

Are you happy with the current implementation? If so, I'll pull.