Add mime type to directory entries
Move some common blob reader code into a separate struct, move some errors to common file.
Make the FileBlobReader an interface, it must be created using function.

That way we introduce independency from the internal implementation.
This also allows us to move the storage field into baseBlobReader.
Extract DirEntry as a separate structure
Implement dir blob reader
Fix blob type if in the directory reader