Adds storage driver interface, tests, and three basic implementations

Re-opening of #630 with the new orphan next-generation branch.

@dmp42 @wking @bacongobbler @noxiouz 
Would it make more sense for List to return a slice of `os.FileInfo` structures instead? http://golang.org/pkg/os/#FileInfo