Many working updates by Johan and Mazrick

Johan:
- Removed external dependencies to use UTF-8 and Base64 browser-native functions.
- Removed alerts, export a single deflate function and use properly named functions (helps debugging, is shorter, prettier, etc).
- Use literal array notation for array literals.
- Show benchmark times and use maximum compression by default. (Also, use the new top-level "deflate" name from my modded rawdeflate.js.)
- Run the test page with rawdeflate.js as a shared web worker, where available.
- Worker onmessage / onconnect methods should be declared in barren global scope.
- Implemented both SharedWorker and Worker interfaces.

Mazrick:

1.  Updated the test page to be able to take test payloads that are base64 encoded.
2.  Extracted the encoding methods to a separate file and added JS Base64 encode/decoding to support IE.
3.  Isolated the worker process in it's own JS file

The main reason for item 1 is to allow you to to put a base64 encoded payload in a bug report and let others reproduce the issue. (I have such a bug and would like to post it separately)

The main reason for item 2 is to better support more browsers while keeping the components modular.

The main reason for item 3 is to allow the worker process to both deflate and inflate, as well as making it more modular.