Change query to Query, add Query function to components

* Open Query enables it to be passed around to functions
* Attach a Query method to the various parts of the DSL
  enables us to get back to the query