ISPN-3917 Filter objects using the query DSL (without using an index)

Implement an efficient boolean predicate index that is used to evaluate queries directly against non-indexed data.
Basically instead of indexing the data stored in the grid we resort to indexing the filters in such a way that
a large number of filters can be executed efficiently. The data can be either Java objects accessed via reflection
or binary encoded Protobuf data.

Also:
* replace usage of deprecated protostream API
* remove magic constants from WrappedMessageTagHandler
* remove some out of date TODOs
* some internal refactoring of query DSL