Improved encoding packet API and others:
- turned EncodingPacket object into the data unit for both encoding
and decoding
- provided several methods for writing/reading packets to arrays,
buffers, serializables, Data{Out,In}put and
{Writable,Readable}ByteChannel objects
- created Parsed container object that may contain a parsing failure
reason string
- improved parameter checks, making them more verbose in order to
help developers understand which parameters are invalid