stream-level SENDME recv window accounting is incorrect with packing and fragmentation (prop340)

stream-level SENDME recv windows are currently updated in StreamReader::recv_raw, decrementing once per message. They should instead be decremented per cell, which won't be the same thing once packing and fragmentation are enabled (prop340).

In particular:

  • If an incoming cell contains two DATA messages for the same stream, the window should only be decremented once (pending clarification in torspec!265 (merged)). The current code will decrement it twice.
  • If we implement a message that both counts towards windows and can be fragmented (such as DATAGRAM), the window should be decremented once per cell, not just once for the whole message.

cc @dgoulet

See also #1067