Activator performance improvement

Shouldn't close the previous PR early. Turns out I did not have to change much of my design.

Pinging previous trackers
@pranavkm
@halter73 
@rynowak
@ipjohnson
@yishaigalatzer 
I am not sure we should have the 2 instance singleton only because we want to assume they don't share cache. Also I am not sure we can make that assumption anyway.

I understand that you don't want this extra class especially it is basically the same class as Service with 1 line difference. I thought about it and thought there might be a cost to make Service.Creat(ServiceProvider) virtual and decide to go with the ugly route.

The reason I didn't implement the instantiation of TypeActivator you described is that I didn't want to new up any TypeActivator instance unless the client didn't describe a TypeActivator. If they client do describe a TypeActivator I want to use the instance/type they provided and with the scope they have chosen. I am just trying to be as flexible as we could.

If we chose to go with the less flexible route we should think about what to restrict what client could do. Note that client package now describe ITypeActivator as TypeActivator and this would cause the infinite recursion as described if we use normal service provider