Note: Multiple not-backwards compatible changes! But porting should be straight forward:)
Performance and memory use improvements from major redesign to use bit masks to keep track of set envs
Allow specifying env through 'most specific group', where a group which contains a subset of envs contained in another group is considered more specific.
Replaced 'valid_envs' arg with 'env_factory' arg, all defined envs are now valid!

The chosen value for a property is now decided in the following manner:
 1) Setting attribute with 'override' forces the value regardless of any previous value
 2) Most specific group/env, regardles whether the attribute is set in '__init__', 'with' or 'mc_init'
 3) If an attribute is already set in '__init__', 'with' or 'mc_init' and it is attempted set again in another scope, using the same group/env, then
    the choice of replacing the value is like follows:
    a) Setting in 'with' block replaces any value set in '__init__'
    b) Setting in 'mc_init' never replaces eny value.