Change .editorconfig because we use spaces instead of tabs now
grunt watch didn't actually work because the config was wrong
For uncompressed files I was accidentally writing an extra byte. It's not
possible to create a stream of 0 bytes, so for empty files we need to touch
instead.
So, it turns out that in stream mode the 'binary' library I was using has
some... problems. Extreme memory usage and poor time performance mean that it
isn't usable, even if it is more convenient.

I have refactored to be a bit more primitive. The code needs some major
tidying up and de-duplicating but at least it now works without requiring,
for e.g., 4gb of memory to unzip a 10mb zip file.

I imagine that the buffer mode of 'binary' may not be good either, so I will
consider removing that later.
Fill in the basic tests. I haven't shared the assets yet.