Refactored into Storage and MapStorage interface

Also added FileStorage, and tests
Updated the documentation for the new interfaces