Experimental extensions model

This is a follow-up to discussions over there:

* https://github.com/docker/docker-registry/pull/493
* https://github.com/docker/docker-registry/pull/565

and ideas from @wking @ncdc and @smarterclayton (and others)

This is not necessarily a replacement for the other PRs - rather an attempt at formalizing the discussion into concrete code.

This may or may not be merged, depending on whether:

a. this does solve the needs of the people interested in extending
b. this is clear enough and simple to use (both for users and developers)
c. the maintenance burden is small on the core registry team

Opinions?
Would it make more sense to return an empty Config here? That way, extensions can do

    if cfg.some_key:
       …

without first having to check if cfg was None or valid