Packet handling: simple efficiency improvements

This pull request is the squashed equivalent of #298, complete with standards-conformant commit message.

PacketThrottle:
* add method to report multiple lost packets, so we can call that
  instead of iterating over `notifyOfPacketLost`. This replaces the
  original `notifyOfPacketLost` that is now no longer used

NewPacketFormatKeyContext:
* reduce the operations inside a `synchronized(){}` block to a bare
  minimum
* only keep track of the sent times of *lost* packets: if a packet is
  not lost, we still have a `SentPacket` that keeps track of its own sent
  time (this also reduces the amount of work in `ack()` for the most
  common code path)
* reduce bounds on packets to track sent time of from 16384 to 128 (we
  don't expect that many *lost* packets on short notice, and if we do,
  not having a super-accurate RTT estimate is the least of our
  problems)
* improve `ack()` CPU efficiency by using `SentTimeCache` instead of
  `SentTimes` (we're no longer concerned about memory given the above, so
  optimize for speed)
* use `for(item : collection)` wherever applicable for readability
* cleanup modified code to conform to the coding standards

SentTimeCache:
* this class replaces `SentTimes`
* uses a `LinkedHashMap` with O(1) lookup instead of a linear search
* uses more memory than `SentTimes` did, but we shouldn't care anymore

SentTimes:
* removed since it's highly inefficient by design and is no longer used

SentTimeCacheTest:
* new unit test for `SentTimeCache`