Validation - Marked which tests are using "invalid" queries according to the current validation, using a TODO
Validation - Updated Geo Validator to accept lists of numbers for co-ordinates as well as arrays & added appropriate tests; simplified the validator to make it more understandable.
[Refactoring] Updated SizeOperationValidator to take the mapped field instead of an arbitrary type, as a move towards unifying the OperationValidators; updated tests accordingly, and added a couple of missing cases.
[Refactoring] Changed ExistsOperationValidator to move towards a new model of validation, where it's possible to differentiate between a validation failure and the validation not applying to a particular case.  External behaviour remains unchanged.
[Refactoring] Changed all the operation validators to follow the same pattern as ExistsOperationValidator, enforced by the OperationValidator interface; added more tests as the validators become easier to understand; still an intermediate step as there's duplication that needs removing.
[Refactoring] Changed all the OperationValidators away from the lovely neat Singleton pattern towards a Singleton implementation of an abstract class, as this was the simplest way to remove the duplication in the apply method.
[Refactoring] Moved duplicated validation logic into their own separate validators so it can be reused; added tests for these to reduce the need for testing all edge cases in the higher level tests.
[Refactoring] Renamed TypeValidator to CollectionTypeValidator
[Refactoring] Reverted accidental change to logging message.
[Refactoring] Introduced TypeValidator for validating based upon the class of the field type.
[Refactoring] Introduced ValueValidator for validating based upon the class of the value; refactored remaining validators towards either Value or Type Validators; split public validate method from MappedFieldValidator into a specific EntityTypeAndIdValueValidator - this is still not perfect but it's consistent with the other styles
[Refactoring] Finally simplified isCompatibleForOperator to take advantage of the boolean nature of the new validators.  No impact on overall behaviour, just (hopefully) more readable & testable code.
[Refactoring] Removed changes that make the code review more difficult - comments and whitespace changes.