upload_file: Can now specify content_length

The caller can now specify content_length for the file-like object, if
known. Doing so avoids the call to get_file_size(), which would not work
if the file is not seekable.

The result is that a file can be uploaded from a portion of a streamed
HTTP request.
Merge pull request #146 from datalogics-kam/specify-content-length

upload_file: Can now specify content_length
Fixed dumb mistake; you'd think I'd know how lstrip() works by now.
Fixes a bug in download_object() that would throw an exception if the target directory already exists.

Also cleaned up inconsistencies in naming among the methods that can accept either a storage_object or its name.
These changes are based upon PR #148.
Merge pull request #149 from EdLeafe/working

Restores several reverted commits, and fixes some others