Add packet-loss handling
Right now, we assume no network loss of CapNet protocol packets. The protocol was designed to be tolerant to packet loss, but it's not yet implemented. We need to modify capnet.py to re-transmit packets when it thinks there has been a failure (as well as handle replies that come out of order). We also need to modify the CapNet controller to remember previous replies so they can be re-sent, and we need a strategy to deal with clearing this cache.
Unless there are objections, I plan on making the assumption that clients will only ever have a single pending request at a time, and we attempt to re-transmit until that request is satisfied.