IndexingMemoryController should only update buffer settings of fully recovered shards

At the moment the IndexingMemoryController can try to update the index buffer memory of shards at any give moment. This update involves a flush, which may cause a FlushNotAllowedEngineException to be thrown in a concurrently finalizing recovery.

Closes #6642
if it is a test only setting please make it pkg private and move the test if necesary. If not we should add javadocs and pull it up to the interface