WIP fix for Issue #59

I've been rewriting the test architecture such that we can swap in different providers without changing the code, and also which filer code we use (from /src or /dist).

I have only re-written one test so far, and it works for IndexedDB and Memory.  I have a timing bug with WebSQL and the cleanup code.

Once I'm done this we can turn tests on in travis again using phantomjs and memory.