TODO: break this up into classes for each primary option, eg:
* DataMapper::Query::Fields * DataMapper::Query::Links * DataMapper::Query::Conditions * DataMapper::Query::Offset * DataMapper::Query::Limit * DataMapper::Query::Order
TODO: move assertions, validations, transformations, and equality
checking into each class and clean up Query
TODO: add a way to “register” these classes with the Query object
so that new reserved options can be added in the future. Each class will need to implement a "slug" method or something similar so that their option namespace can be reserved.