Adds storage driver interface, tests, and three basic implementations

Re-opening of #630 with the new orphan next-generation branch.

@dmp42 @wking @bacongobbler @noxiouz 
Technically if the prefix is at a high enough level, this could include all repositories and layers, which could be quite large.

We may want to change this to mimic the [behavior](https://github.com/docker/docker-registry/issues/616#issuecomment-60931440) that @wking suggested in #616 
```go
Count(prefix string) (int, error)
List(prefix string, size int, from int) ([]string, error)
```