factory injections

You are now able to inject on to factories, and also use
the factory return from `container.lookupFactory` to instantiate
fully injected instances.