Another far too large commit...

Changed the existing predicates to use the Comparable.compareTo()
interface instead of Object.equals().
This was done to set the stage for easier implementation of the greater
and less than operations, which only need to check for a different return
value of compareTo().
This may be slower than having specialized predicates, but aint no one got
time for that.

As a requirement for the above, I changed the predicate builders to accept an
Operation as an argument.
One my main goals with these predicates is to keep them simple and have
little to no branching logic in the apply() method for performance
reasons.
Of course, I am doing a reflection method call every time...gotta see how
much that is hurting me.

Implemented all of the primitive and string comparison predicates (equals
only).

Added crude support for double quotes and backslash escaping in the
parser (semi standard meanings).
This means anything within quotes, with the exception of backslash, will
not be treated as a special character and can be used inside values.
Backslashes will allow the immediately following value to be ignored as a
special character.
This code is gross and should be refactored sooner or later.