codec: Fixes and tests for decoding time before unix epoch, and decoding zero-length list/map in stream into nil slice/map.

This fixes issues #5 and #7 .
codec: remove buffering from encoder/decoder. Add buffering to rpc. fix binc floatZero bug.

This codec library does not internally do buffering during encode or decode, leaving
that to the caller of the NewEncoder or NewDecoder function to pass a buffered stream
if desired.

However, RPC owns the connection and is the caller of the NewEncoder/NewDecoder. The RPC
support now internally passes buffered streams to the NewEncoder/NewDecoder calls.

Fixes #9 .

In addition, there was a floatZero bug in binc, where floats with zero value could
mess up the decoder state. This is now fixed.
codec: improve decode performance by calling ReadByte if Reader is io.ByteReader, and other misc optimizations.

Also include other misc optimizations and clean up of comments.

Improves RPC performance as seen in #9 .
Merge upstream