!con #15496 Make entries of shards persistent

- Move all entry related logic out of the ShardRegion and into a
  new dedicated child `Shard` actor.
- Shard actor persists entry started and passivated messages.
- Non passivated entries get restarted on termination.
- Shard Coordinator restarts shards on other regions upon region failure or handoff
- Ensures shard rebalance restarts shards.

Refs #15496 
The time based snapshots does seem a little extreme, given that Shards may have activity much more often than the Coordinator. If state has not changed since the last snapshot, does the `saveSnapshot` command still save into the persistence layer?

If so, then I think moving to a event counting model would be better, as it would save storage space on system will low numbers of events.