File meta data now saved by storage type class
Files now stored by hash, with 2 levels of sub-directory

Fixes issues with clashing filenames and low performance when thousands
of files in same directory
Updated README
Throw InvalidStoragePathException if path is bad
Create directories recursively, and throw exception if can't
Component to assist sending files back to client
Changed to a more descriptive method name
Merge pull request #1 from burriko/dir-hierarchy

Merged in dir-hierarchy branch