Pretty sure I fixed a problem with the way tunnelsByRemote was maintained.  The packet would be sent to :9003, but then it would be returned from [::1]:9003, which caused the tunnel to be refiled, so when a packet was again sent to :9003, a new tunnel was created every time.  Now the mapping doesn't change; so although the tunnel knows to send its packets to [::1]:9003, it is still looked up by :9003.  Could this cause problems?  It seems to work perfectly.
It can handle dropped packets.
Added a bunch of random stuff.