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.
The `^` is missing in the first regex here. You could also construct it from `pattern` once outside of the loop and re-use the `Regexp` instance.

I'm assuming that we always control `pattern`, too. If there's a chance that we won't, or if you just want to be extra paranoid, you could use `Regexp.escape(pattern)` instead, to avoid surprises with regexp metacharacters.

And my comments for this method are now longer than the method itself. Hooray! :confetti_ball: