* Enforce minimal varint encoding when decoding multiaddrs.
* Ensure codecs fit in 32bit integers for compatibility. We can increase the
size, but we'd need to change the `Protocol.Codec` type from `int` to `uint64`.
This adds a `Component` helper type and a `ForEach` helper method.
The first attempt used an interface but interfaces imply allocation. We really
can't afford to allocate here.