Wrote monad transformer to add arithmetic decoding to arbitary monads.

The reason:
Arithmetic decoders give random generators for free using (fromBytes . randoms)
Making the decoder a transformer for another monad allows random generation
in the inner monad.
Move a few functions, write evaluation function