Refactor some of the query methods & add better documentation

Added better code level documentation, and refactored several of the query methods.

Added `exists?` and `empty?` methods for the relation as well.