Percolator should cache index field data instances.

Before the index reader used by the percolator didn't allow to register a CoreCloseListener, but now it does, making it safe to cache index field data cache entries.

Creating field data structures is relatively expensive and caching them can save a lot of noise if many queries are evaluated in a percolator call.

Closes #6806
I think `getForField` can stay? Because it is shorter, otherwise all code needs to do context.fielddata() and then invoke getForField()