Reworking client tests, added more utils for fs testing, failing multipl...

This PR is about adding a bunch of tests for various ways that a client might interact with the server, and making sure the filesystem ends up in a state we expect.

This isn't ready to land yet.
It's dying here with this stack:

```
Uncaught Error: [object Object]: Websocket unexpectedly closed.
      at WebSocket.handleClose (/Users/dave/Sites/repos/makedrive/client/src/sync.js:92:17)
      at WebSocket.onClose (/Users/dave/Sites/repos/makedrive/node_modules/ws/lib/WebSocket.js:367:18)
      at WebSocket.EventEmitter.emit (events.js:98:17)
      at WebSocket.cleanupWebsocketResources (/Users/dave/Sites/repos/makedrive/node_modules/ws/lib/WebSocket.js:782:23)
      at Socket.EventEmitter.emit (events.js:117:20)
      at _stream_readable.js:919:16
      at process._tickCallback (node.js:419:13) 
```