Generified the predicate creation codebase.

I was also able to consolidate all of the predicates down to a single
ComparableComparisonPredicate.
Since I was using Comparable.compareTo() in all of the old predicates
anyways, there should be minimal performance impact.

I also ran FindBugs over the code and fixed some stuff...some array bugs
still remain.