Add Typed Array support.
Restructure Range Encoder/Decoder to more closely match Java source.

Add tests to verify that our new implementation works properly!
Note some useful Range Coder references.
Refactor InWindow and OutWindow into LZ package.
Refactor BinTree into LZ package.
Refactor BitTreeEncoder and BitTreeDecoder into RangeCoder package.
Refactor lzma.js into LZMA/Decoder.js (matching upstream organization).

Also added Base class and turned some numbers into symbolic constants.
Froze 'package' objects so that (eg) RangeCoder.Encoder can be recognized
as a constant.