JAH-179 Change KafkaSpout to follow Storm design recommendations by not blocking

Added a reader thread so the thread calling nextTuple did not block. This was causing other problems because Threads are reused between bolts and spouts and the MetricAggregationBolts weren't always getting their tuples and so evaluation wasn't happening.

This is coded so that it will work with the sequence for shutdown if a bolt is moved, but that doesn't seem to happen on just a shutdown.

Also fix a problem where the windows were not slid while the metrics were lagging. If metrics are lagging for several minutes, the windows could get so far out of date that valid metrics are discarded.