Adds storage driver interface, tests, and three basic implementations

Re-opening of #630 with the new orphan next-generation branch.

@dmp42 @wking @bacongobbler @noxiouz 
@stevvooe We don't need/want recursive directory listing (disclaimer: haven't read all comments, and assume recursive means `-r`)
And simpler is better :)