Adds a low level registry http client interface and implementation

This changeset adds an http client for the exposed registry JSON api, as defined in [docker/docker#9015](https://github.com/docker/docker/issues/9015). Several data structure types are added to the main registry package to define objects that will be serialized/deserialized in this JSON api.
Yeah it feels weird in both locations, so I'm fine with either.