Remove reference to a ThreadLocal instance which causes it not to be GCed

This is because thread holds a hard reference to the QueryParseContext value, that one holds a reference
to this IndexQueryParserService  instance which holds a link to the `cache` (ThreadLocal instance).
This a hard reference which comes on top of the usual WeakReference in Thread.threadLocals.

We need to break the last part of this chain so that `cache` will only be weakly referenced by the Thread.threadLocals, which can be cleaned.
Once cleaned, Thread.threadLocals will pick it up and clean the reference to the QueryParseContext and this IndexQueryParserService as well.

Closes #3130