Adds storage driver interface, tests, and three basic implementations

Re-opening of #630 with the new orphan next-generation branch.

@dmp42 @wking @bacongobbler @noxiouz 
On Mon, Nov 03, 2014 at 01:56:15PM -0800, Brian Bland wrote:
> The S3 list equivalent GET Bucket supports `max-keys` and a `marker`
> argument, which is the last key of then previous result set, or the
> key before the first that should be returned from the
> call. Implementing the interface with `List(prefix string, size int,
> from int)` with this model seems like it would require loading all
> results up until the `from` argument so that we can determine what
> the appropriate `marker` is.

In the abstract, I'm fine with:

  List(prefix string, size int, [from string]) ([]string, error)

where ‘from’ is an optional name used to determine the initial offset
(e.g. List("/repositories/", 100, "bob").  I'm not sure how easy
*that* would be to implement in Redis or Elasticsearch or other folks
that do support the integer offset.  Can anyone think of an API that
would allow efficient subset lists in both backends?

[1]: https://github.com/docker/docker-registry/issues/647#issuecomment-60164431