add file support

The file API is not so great:
- It doesn't support listing files
- It munges the filename after uploading

This makes our File class a bit weird. I appreciate any feedback on its design.

Also note that it loads the whole file into memory before uploading - this could probably be optimized, assuming urllib supports it.