Adds storage driver interface, tests, and two basic implementations

Re-opening of #630 with the new orphan next-generation branch.