Add support for defining dependecy factories

This allows the Container to know when to always create new instances
rather than the consuming code having to know when to call 'fresh()'