Adds storage driver interface, tests, and three basic implementations

Re-opening of #630 with the new orphan next-generation branch.

@dmp42 @wking @bacongobbler @noxiouz 
Maybe we don't hear the same thing with "content-adressibility". This is about being able to retrieve a given binary payload from an id that can be computed again from that binary payload. This is what tarsum is for, and I simply fail to see a point in asking driver author to copy the same code over and over again in every implementation.