Moves storage module to use prototypes for inheritance and structure.

addresses #2852

- Moves storage modules to use prototypes and to create prototypes
that inherit from the base storage ctor.
This is just for legacy reasons ATM.  Right now we expect every module to give us a singleton instance so as to not break the entire flow of Ghost I'm keeping with that pattern.

I hope to move Ghost in the future to exporting constructor functions from every module and having something in `./core/server/index.js` handle instantiating instances of every module that it depends on.  That should allow for easy creation of multiple Ghost instances within one node process as well as decouple inter-module dependencies.