Add support for write operations to S3FS

This is just to implement `onWriteFileRequested` for S3FS

Begins work on #41 
Closes #70

Tasks

- [x] Update WebDAV client to have HTTP PUT method so the S3 mock library can write files
- [x] Create new test case for writing files and checking written data is correct 
- [ ] Update `onOpenFileRequested` to accept the `create: true` flag and create the file accordingly if present
- [x] Update the tests for `onOpenFileRequested` so it no longer expects requests with `create: true` to fail.
- [x] Update test server logic to
  - Remove created files
  - Revert edited files
  - Restore deleted files
  
  after the test suite is run so the filesystem state is the same every time the tests start
Isn't this different though? I imagine that `onCreateFileRequested` is fired when the user creates a new empty file in the browser. This case responds to the user writing to a file, so we want to create the target file if it doesn't already exist. Really need @mtomasz-chromium's input here, the docs here https://developer.chrome.com/apps/fileSystemProvider only shows the options object that is passed to each of the write events, not a description of the event itself.