handle uploads and deletion

Also, all methods now assume `userInfo` is a dictionary.
pass `userInfo` as a dictionary
copy the public link after uploading a file
add support for renaming, privacy changes, etc.
implement all the actions
use a couple of preferences and define their defaults
clean up names and description