ClusteredBeam: Use Longs instead of DateTimes as map keys.

This avoids weirdness due to the fact that DateTime equality is based not just on the
instant, but also the time zone, and arbitrary time zones can come in by way of the
Timestamper interface.
BeamPacketizer: For when you want to send one thing at a time but still get batches.
BeamPacketizer: Send data when available instead of waiting for a full queue.
BeamPacketizer tests.