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.
Because you don't want to escape the actual `/` you want there, but you *do* want to escape a container or object name that contains a `/` character.

```ruby
Array(path).map { |part| URI::Escape(part) }.join('/')
```

Although, `URI::Escape` doesn't actually escape `/`:

```ruby
[7] pry(main)> URI::escape('foo/bar')
=> "foo/bar"
```