BlockManager: function to return maximum block coordinates
Blocks: Split into Blocks and BlocksImpl for ease of inheritance
Segment/SliceGuarantor: implicit cast of Input<Blocks> to shared_ptr<Blocks>
Core and CoreManager classes