Documentation, changes we've discussed, mostly :-)

Changes to query
- All methods like query::new_select() methods are now deprecated
  in favor of, for example, 'new select_query()' which is shorter and
  more object-oriented.
- New query::specialize() function allows the mechanism for converting a
  query object of one type into another. Needs to be improved, as currently
  it would copy all data into the object even if not needed. It should copy
  only the union of the source and destination queries.
  vvvvvvvvvvv This is used for... vvvvvvvvvvvv
- Convenience methods are also provided for query, ie $query->select() will
  do select_query::specialize($query) for you.
- Also, prepped documentation for moving all operations to create new, unique query
  objects for each operation, to avoid having users accidentally modify a query,
  say in a loop, that is reused later. Given that we need to be able to switch the
  actual class of a query as its built, its already not possible to change a single
  instance between query types, and so the user just "has to know" (via documentation)
  to make that work without mistakes.
- My thought here is that we end up with the freedom to start from a "repository" root or
  from a "type of query" root, ie the difference between new query("my_table")->select()
  and query::select("my_table").
  It also lets us convert queries between different types effectively.
- Lots of code formatting adjustments ;-}{
- Added @property indicators for protected fields that are reachable from __get()
- Other stuff.