Already loaded SimpleIdReaderCache should be reloaded when a new `_parent` has been introduced.

Closes #4595
Relates #4568
IdCache shouldn't implement Iterable
Fixed SimpleIdCache#clear() to not invoke onRemoval twice, which can happen in rare cases.
Add NodeVersionAllocationDecider that prevent allocations that require forward compatibility.

Today during restart scenarios it is possible that we recover from a node that
has already been upgraded to version N+1. The node that we relocate to is
on version N and might not be able to read the index format from the node
we relocate from. This causes `IndexFormatToNewException` during
recovery but only after recovery has finished which can cause large
load spikes during the upgrade period.

Closes #4588
Pass correct number of expected shards to assertion