Move decoder/encoder out of message namespace
Make the encoder a class so we can privatize methods
Use stream attr_reader in encoder instance
De-privatize class methods in Decoder (as it doesn't work that way)