ValueGenerator<T>
Provides a convenient shorthand when TStep is  IComparable<T>
            and the default value of TStep represents zero.
            
Encapsulates the ability to increment a T value by an amount
            which may be of a different type.
            
protected ValueGenerator()