feat($injector): Service/Factory/Provider Code Resolution through DI

See also PR #3802

Allows array-notated constructors to use a service/factory/provider name for their constructor
function, which permits reuse of injectable code with different injectables.
Previously, we had to declare a function in the global context to actually reuse
functions with different injectables. Now we can declare an injectable
constructor inline and refer to it in other DI declarations through the
array notation.