Heavily refactor of Shard to handle failure

 - Shard buffers messages after an EntryStarted is received until state persisted
 - Shard buffers messages (still) after a Passivate is received until state persisted
 - Shard will retry persisting state until success