Marshaler and Unmarshaler interfaces for raw bencode handling

Decode can make short error-less reads without blocking.
Null strings parsed properly.
Encode can handle nil values.