[BUGFIX] Prevent duplicate workspace query filter
[FEATURE] ``queryFilterMultiple`` operation for QueryBuilder

Usage::

  searchFilter = TYPO3.TypoScript:RawArray {
    constraint1 = 'a'
    constraint2 = TYPO3.TypoScript:RawArray {
      0 = 'b'
      1 = 'c'
    }
  }

  searchQuery = ${Search.queryFilterMultiple(this.searchFilter)}
[BUGFIX] Limit & offset not working properly
[!!!][FEATURE] Make search metadata available

Changes the return format of the execute method to return an array
with a ``nodes`` key containing an array of results. Each result
consists of a ``node`` key with the node instance and a ``meta`` key
containing metadata about the result. Additionally the metadata from
the whole request is available along ``nodes`` as ``response``.

This allows for additional metadata to be passed along, needed for display
of advanced results.

Example of output::

  array(
  	'nodes' => array(
  		array(
  			'node' => NodeInterface,
  			'meta' => array
  		),
  		array(
  			'node' => NodeInterface,
			'meta' => array
  		)
  	),
  	'response' => array
  )

Adjust existing code::

  searchQuery.execute() => searchQuery.execute().nodes

  ${q(node).*} 0> $q(result.node.*}
[FEATURE] Highlighting support in fulltext search results

Call ``.highlight()`` to wrap search term matches found in
fulltext search results. Matches are wrapped in ``<em>`` tags.
[FEATURE] Basic support for aggregations