Decouple Registry from Container

`Registry` is used for stateless factory / option registrations.

`Container` uses a `Registry` to lookup factories and options, and then
instantiates and caches objects.

This decoupling allows for multiple containers to reference a common 
registry, which is key to allowing a single Ember app to support multiple 
sessions. 

`Container` is made backwards compatible by exposing many of its associated 
registry's methods.