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.
The reason I didn't use `SegmentReaderUtils.registerCoreListener(context.getReader(), cache); ` is that I was afraid that in the case that the validation fails in this method, the core cache key is in the `seenReaders` map while there is no listener registered for it.  Is that a valid concern?