Add query modification queue based on closures

Remove explicit 'query' method with Closure and replace it with
implicit query queue based on whether or not methods exist on Query
object. This makes it much easier and more natural to use for modifying
queries off relation objects.