ISPN-3807 Cache the result of HQL query parser to be reused

Use a local cache with expiring entries to store the result of the HQL parsing and reuse it
if same query is executed.

Jira: https://issues.jboss.org/browse/ISPN-3807
Indeed, makes sense to avoid hitting the volatile twice, at least in the happy case.