clarify varint.encode documentation

After showing someone varints we realized that the documentation for encode was quite confusing.
This clarifies best use of `encode`, that the return value is also the 2nd argument,
and that the argument is mutated.

also included are fixes two places where `decode.byteRead` was still mentioned