Mainly this commit is about replacing global state GeneneratorRegistry with per-Thread lifecycle managed GenerationSession. Now each generation in given test is isolated and independent of previous generations.
new concept of SessionState is introduced to maintain state during generation session in a light way.
Range rule is given as a bonus and it shows usage of this new concept.