Thinking about this...it feels weird to me to call `indexShardStateChanged` when a shard gets created...it is not a state change but just a creation. I see no need to have two calls here (`indexShardStateChanged` & `afterIndexShardCreated`) to do exactly the same. Also, removing `indexShardStateChanged` here we would get rid of the `null` invariant.

The disadvantage would be that one needs to listen to both `afterIndexShardCreated` and `indexShardStateChanged` to get the whole picture about a shard.

Thoughts?