Activator optimization: first stage - cache constructor and parameter routing info

First stage of our optimization is to create caching for constructors.
should be possible to avoid allocating this array on the happy path, make an alternate constructor for the key, and teach it to compare object[] with type[]