add StorageDir and StorageFile classes; update dir listing

the storage API has to send StorageDir and StorageFile
objects back, instead of the plain object names.
This allows to acommodate more information in the results and
gives a standard class to use.

The http rendering is updated to show the extra information
and links to follow through the filesystem.

The get_file function is updated to redirect if the client
tries to download a directory instead of a file.
return json dir listings with links

create a function and helper functions to return the json
listing of directory entries similarly to the html template.
get user metadata information from irods -> storage.stat()

implement the storage.stat() call which get metadata from the storage.
in the irods case, this are some attributes we have to get
specifically from the file or dir handle, and the user metadata.

they are integrated in the json output of a dir listing.

to allow this, the StorageDir and StorageFile classes
had to be changed.
remove print statement
fix multipart transfer

send a correct content-type, not having spaces
between 'Boundary' and the actual boundary