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.
Go ahead and throw this in `errors.go`, even if it is client-specific? (This is both a statement and a question...)