Fuse terms, respecting grouping, AND and OR.
Also recognize 2M as being 2 megabytes.
Support negation of terms or nested queries
Ignore small terms (a, an, etc) in queries, and accept lowercase AND, OR, NOT
New PatternMatcher class

This class allows to parse patterns containing "...", and will ease the
implementation of auto-completion.
Move fuseTerms to utils, as this function will be used for nesting queries
Parse "related to ..." into a subquery.