Throw InvalidStoragePathException if path is bad
Create directories recursively, and throw exception if can't