Test to prove that rollup fails for delayed metrics
Some nits
First pass at improving the shard state management and rollup scheduling
Make both ingest and rollup context push/pull
Add comments explaining changes, add another case to SlotUpdateOnRead
Merge branch 'chinmay/fix_rollup_bug' into chinmay/delayed_metrics_bugfix

* chinmay/fix_rollup_bug:
  Make both ingest and rollup context push/pull
Improve MetricsIntegrationTest to reflect the new updateslotsonread logic
Add slot state convergence test
Cleanup code and add comments explaining what I am doing
Add some comments for what I am doing with the test

Cleanup code a bit

Only update if the stamp which we have is not dirty
Mark Update stamp as dirty if a higher timestamp slot is not taking an update belonging to lower timestamp and has already been marked as dirty
Fix the InMemoryShardStateIO used in ShardStateIntegrationTest
Add concurrency test for shard state managers on different ingestion hosts
Merge branch 'chinmay/delayed_metrics_bugfix' into rax-stage

* chinmay/delayed_metrics_bugfix:
  Add concurrency test for shard state managers on different ingestion hosts
  Fix the InMemoryShardStateIO used in ShardStateIntegrationTest
  Mark Update stamp as dirty if a higher timestamp slot is not taking an update belonging to lower timestamp and has already been marked as dirty
  Cleanup code and add comments explaining what I am doing Add some comments for what I am doing with the test
  Add slot state convergence test
  Improve MetricsIntegrationTest to reflect the new updateslotsonread logic
  Add comments explaining changes, add another case to SlotUpdateOnRead
  Make both ingest and rollup context push/pull
  First pass at improving the shard state management and rollup scheduling
  Some nits
  Test to prove that rollup fails for delayed metrics