DATAMONGO-1093 - Added hashCode and equals to BasicQuery.

We now have equals and hashCode on BasicQuery. Previously we solely relied on Query.hashCode/equals which didn't consider the fields of BasicQuery.
Introduced equals verifier library to automatically test equals contracts.
Added some additional test cases to BasicQueryUnitTests.

Based on original PR #178.
should we use `ObjectUtils.nullSafeEquals` here as well?