Support new queries:
  - Fetch join from instantiated joined object
  - Fetch join by explicit hash properties
  - Fetch join by explicit name
  - #not method to negate a predicate
Improve test speed by using '.count' instead of '.to_a.size'
Add first_or_* methods
add first_or_* methods
Added better manaing of to-one and to-many relationships