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.