Refactor `StreamId` and `CircId` to be nonzero

While we currently use 0 as a sentinel value on the wire to mean "no stream id", the current version of StreamId would be more idiomatically represented as Option<NonZeroU16> internally.

This will particularly make more sense for the new cell format proposed in prop340, which stops using 0 as a sentinel value and instead omits it where applicable.

We should do the same for CircId for similar reasons + consistency, though it isn't strictly needed for prop340.