Prototype override/default mode for services

Looking at allowing framework services to be registered using default precedence, this allows duplicate service dependencies to be added to the service collection, but highest precedence (OverrideSingle > OverrideMany > DefaultSingle > DefaultMany) will be returned.

TODOs: Supporting other DI containers, also need a better name for OverrideMode
Since most of our frameworks use the ServiceDescriber in GetDefaultServices(), it might be nice to set a different default OverrideMode as a constructor argument to this class. I would expect most frameworks to use DefaultSingle.