Fix memory leak when percolating with nested documents

The percolator uses non segment reader impl (MemoryIndexReader), this causes associated cache entries not automatically be cleared when the reader closes and that is why the percolator removes the cache entries manually (filter cache, field data) 

However when percolating a document with nested objects a multi reader is used that wraps a MemoryIndexReader for each nested object. Cache entries use the leaves as key in filter / field data cache, but the percolator clear using the top level multi reader. This causes cache entries never to be evicted and resulting in OOM.

The memory is fixed by the following changes:
* Not allowing caching for non segment reader implementations.
* The percolator never cache anything that associated with the in-memory index where document being percolated resides in.
not sure if this is necessary since we are really checking this in the `SegmentReaderUtils#registerCoreListener`
and that is what we should use here? since we fix that method in 4.9 to work with `AtomicReader` we should only have one place to register them?