Use the base-request for the upload-file url by passing in a callback for the additional Etag comparisons we need to make.
Send the Accept: application/json header with all requests.
Don't use the after-request-p since we can call the function using the kwarg but pass in nil, it's not clear whether it's a valid function then.
Added a file-operation function to refactor the file operations into a base method and simply customize the filename/method.
Use the file-operation method for the remove-file and the create-directory function.
Added a stub method for retrieve-file and retrieve-file-metadata.
Implemented retrieve-file.
Implemented retrieve-file-metadata.
Export the new functions: retrieve-file{-metadata}.