!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 
Yes, when adding new fields to existing classes, old versions will deserialize fine and the new field will be set to the default value; http://docs.oracle.com/javase/7/docs/platform/serialization/spec/version.html#6678

I'll tripple check that it's set as Set.empty and not null though, as there was not a way to write a test for this