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?