Add per-app bandwidth counting machinery
- The
TunnelScaffolding
gains a newget_bandwidth_counter
method that lets scaffolding implementations provide a per-app bandwidth counter. - This gets updated by the
InteractiveCopier
insideonion-tunnel
when traffic is sent and received over the tunnel.- Note that it doesn't capture any Tor network-induced overheads, like cell framing etc. (although those are still captured in the global bandwidth counters, they aren't attributable per-app)
- The
BandwidthCounter
type was extended briefly to be able to support this usecase (instead of just being used for a global counter). - A terrible Java implementation of this concept demonstrates that it works by awkwardly hacking on to the existing app list view.
Closes #39 (closed).