HSEARCH-917 Add match all terms option when matching in the DSL API

Here we go for HSEARCH-917...

I had to radically change the way the query is built as it's necessary to be far more cautious when we build a AND query: if an analyzer returns several tokens (typically with the synonym filter), we need to build a OR query with the synonyms.

I based this work on what is done in the QueryParser of Lucene 4.4.0 (the QueryParser of Lucene 3.6.2 doesn't handle this case).

This is still a WIP to explain the principle. I still have to work on it to deal with the case when we have several fields.

Happy to discuss it!