Restore QueueWatcher conditions to TicketSQL and the collection API

The class on which we want to look for roles was lost during the
refactoring of role limits and joins in commit 4b15643.  This commit
restores the ability to tell RoleLimit that you're interested in roles
on containing classes like RT::Queue.  It also allows the same logic to
happen with arbitrary other record types using roles, removing the
hardcoded "Queue or id" column choice.
Support ordering tickets by queue watchers

Previously OrderByCols accepted FIELD => "QueueCc" but treated it as
FIELD => "Cc", that is, as the ticket watchers instead of queue
watchers.  Resolve this inconsistency by passing the target role group
class as an argument to _WatcherJoin, which percolates into
_RolesGroupsJoin.  This matches the behaviour of the RoleLimit method,
which handles limits on ticket and queue watchers.
Encapsulate the role group class into a method

This enables overriding of the default of blessed($self->NewItem).
NewItem may return a subclass of RT::Ticket, which doesn't match the
database values and confuses the role limits.  An example is
RT::Reports::Tickets which uses a NewItem of RT::Reports::Tickets::Entry
but cares about role groups on RT::Ticket.

The method is provided by the Roles role, so most consumers need not
worry about this implementation detail unless they're doing something
wonky.
Merge branch '4.2/restore-queue-watcher-clauses'