fun with encoding

I added a BinaryEncoding interface and an EncodingTest in the test code to run through several implementations of the interface.  I tried to wrap the bennight encoder with the interface but I did not succeed (the check that the original matches the byte[] after base encode, UTF-8 encode, UTF-8 decode, base decode fails half the time).  Maybe you can find the issue?

Base64 encoding will encode 4 chars from every 3 bytes, and theoretically with base128 that could be changed (improved?) to encode 8 chars with every 7 bytes, but I think we'd want to ensure that we don't end up encode an additional 8 chars for every overflow (ie. we wouldn't want to encode 8 chars from 1 byte).

Also with base-128 we'd have to ensure we preserve sort order which should be do-able.  Just another thing to consider.