Refactor the storage sub-system.

Prior to this patch "storage.h" had grown large and
unwieldy. This patch splits the various types of
storages in their own source files.

Also since there was no use of the simple "Flag",
it is deleted and "SimpleFlag" is renamed to "Flag".