Added a simpler and more efficient parser using stacks

The simpleStackTokenParser uses stacks and a simpler parsing algorithm
to effectively parse tokens into a new set of queries and query ops.

It keeps the parseTokens method, which is required by TokenParser, very
simple so that a child class can override pieces easily.

The complex stack parser uses inheritance to reuse the same code to
generate the query operator stack, and resuses the simple query builder
for sets of queries without parenthesis. It then handles the parenthesis
and makes it simple to get it working