Initial Firefox support.

It works, but receiving files in Firefox sucks at the moment.
It's much slower than in Chrome/Opera that have native FileSystem API
support. Also, Firefox has to read the whole file into memory right
before saving it to disk. Bummer.

Instead of converting individual chunk blobs to array buffers (async),
the whole block is converted and then sliced it into chunks (sync).
This ensures that chunks are sent in order in Firefox.
Slicing is done twice now - first the whole block is sliced from
the file and then each chunk is sliced from the block.
Hopefully, it doesn't slow down things too much.