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.
`GetImageLayer(name, tarsum string, offset int)`

Avoid "overtyping" the integers. Generally, `int` is 64 bits in Go and using it avoids type conversions with other methods.

We may actually want to support some sort of ReadSeeker for this method to support resumable downloads. The endpoint will support range requests, but I am not sure about the idiomatic way of handling this on the client-side.