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.
This is better than the monolith that was here before. I'm still a little concerned that `request` is guessing what the caller really wants returned based on criteria that seem implicit and disconnected: request method, response header, or body length.

Have you thought about adding a parameter or an `option` to control it explicitly?

```ruby
case options[:as]
when :response
  resp
when :headers
  resp.headers
when :json
  JSON.parse(resp.body)
when :body
  resp.body
end
```