Support encoding.BinaryMarshaler types

Sending time.Time values over libchan has resulted in panics. This is a core
type and correct handling of the time type in libchan is important. By adding
support for types that implement encoding.BinaryMarshaler, we get support for
time.Time along with other types that implement this interface.

At first, it was unclear why this correctly worked, but closer examination
showed that this is supported within the codec package. The main bug was in the
handling in the (*pipeReceiver).copyValue method and its spdy equivalent. The
value copier really needs to be generalized and ported to work with any libchan
implementation to avoid such bugs in the future.