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
Removed confusing multiple QueryParsers

QueryParser now takes a boolean parameter determining if it should be
able to handle parenthesis
Renamed tokenizer and token parser

The stack parsers should be seen as the default.
Renamed test files accordingly
Added parsingError throwing, removed bad parser
Removed need for Query start/end characters

Removed the simple parsers and tests because they weren't serving any
function, additionally the old code was slower, harder to understand,
and more fragile.

The tokenizer and token parser can now handle queries without []
identifying the queries.

Stopped SimpleTokenParser from implementing TokenParser so it can't be
used with a QueryParser
Removed print statements
Queries no longer need {} to define fields

parentheses can now be used to group queries and to define fields so

equals ( "field", "value" ) is legal as is

(equals ( "a", "b" ) or (equals ( "c", "d" ) and equals ( "e", "f" ))
Merge remote-tracking branch 'origin/master' into Tom's-branch