File CRUD operations

* File create, delete, and get added.
* #get still needs a way to get the body and metadata at the same
   time. But also other response headers. May need a separate object for
   this–possibly a library-specific response object
* Not pleased with how Client#request is growing in complexity to handle
  various edges. More abstraction needed there.
Ah. No, I haven't added that yet. I was primarily concerned with converting to the more functional style first and foremost. Then I added file metadata support for completeness.  The latter probably should've been a separate PR.  But this PR has already grown well beyond scope: at least 2 significant features and a major refactor. So.....