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 
You probably want to handle the case where you get a null back from the service provider and throw an exception. In the old code it threw an general Exception but it might be nice to have a specific "MissingDependencyException" that holds a reference to the type being searched for and what type was being constructed.