Container Learns: Factory injections

- [x] the hard work (make it all work)
- [x] improve commit messages
- [x] fall back to create time injections if no extend is present.
- [x] add examples to this PR

You are now able to inject on to factories:

```javascript
container.register('model:user', User);
container.register('store:main', Store);
container.register('config:main', Config);

container.factoryInjection('model:user', 'store', 'store:main')
container.injection('model:user', 'config', 'config:main')
container.lookupFactory('model:user').store  instanceof Store; //=> true
```

Also the factory returned from `container.lookupFactory` can be used
to instantiate fully injected instances.

```javascript
// assuming the above example

var UserFactory = container.lookupFactory('model:user');
var user = UserFactory.create({ name: 'stefan' })

user.container === container // => true
user.config instanceof Config // => true
user.name === 'stefan' // => true
```