Warn during tests if role consumers override a role method silently

This requires that classes explicitly -rename or -exclude any role
methods they override.  Silent overrides make debugging more difficult
and may lead to incorrect developer assumptions (for example, that you
can use SUPER:: in an overriden role method to call the role's version).

Tests will now flail very loudly if you don't declare your intent.
Document the Single and Column attributes of roles
Move role-related methods into a role
Store the original role attributes as a shallow copy

This was the original intention since it leaves EquivClasses for the
announcing class but strips it from the role attributes in the
equivalent classes themselves.

The array ref value of EquivClasses is still modified by RegisterRole to
add RT::System, but that's OK since it is simply an implicit equivalent
class.  It should be introspectable later rather than hidden.
Ensure any class returned by RT::Group->RoleClass does the Roles role

This is more nicer than duck-typing HasRole, and catches uses of _ROLES
elsewhere in RT::Group as well.
Provide a method to access role attributes rather than using _ROLES directly

This is a bit cleaner, documented, and doesn't let the caller change any
attributes using the returned reference.  The next step would be to
start using objects to represent role metadata, but that feels much
heavier an abstraction than is needed.  A hashref is fine for a
read-only handful of flags.
Optionally filter returned role names by the presence or lack of role flags

These flags are accessible via the ->Role() method as well, but this
filtering mechanism avoids an additional map and grep on the caller
side.
Introduce the ACLOnly and ACLOnlyInEquiv flags to role metadata

These are advisory flags indicating when a role is only used for
granting rights and generally shouldn't contain any members.  For
example, the Owner and Requestor ticket roles should not contain members
at the queue or system level.  These flags are useful in the UI when
generating a list of selectable roles to display for objects.
Merge branch '4.2/role-inspection' into 4.2/role-roles
Strip out "bundling" support effectively removed in 3.7.1

27ed2c9 disabled the %can_bundle hash, which controlled all "bundling"
of similar queries.  This functionality has since been re-implemented
more correctly by caching join clauses.  Remove the old unreachable code
which the %can_bundle hash mediated access to.
Remove unnecessary explicit empty SUBCLAUSE

This line, along with its comment, was added in ca592e4 in RT 2.1.59
when Tickets_Overlay_SQL.pm was first added.  It merely provides an
unnecessary default -- and the comment is just as true now as when it
was added.  Remove it.
Allow providing a more explit controlled message to RT->Deprecated
Rename Limit in RT::Tickets to LimitField, so ->Limit acts as elsewhere

The old-style LimitFoo methods now call LimitField, which goes through
the Restrctions and Clauses machinery.  For compatibility with the rest
of SearchBuilder, however, it is exceedingly useful to have ->Limit act
immediately.
Merge branch '4.2/ticket-limit' into 4.2/role-roles
Factor out role/watcher methods on tickets into a role
LoadOrCreateByEmail does not parse non-email-addresses

LoadOrCreateByEmail calls:

    ($email, $name) = RT::Interface::Email::ParseAddressFromHeader( $email );
    $self->LoadByEmail( $email );
    $self->Load( $email ) unless $self->Id;

When passed a string with no "@", ParseAddressFromHeader returns an
empty $email and a defined $name; this results in both Load calls
failing, and the later Create failing because of Name is set to $email.

Attempt to load the user with its name if no "@" is present.
Allow ->RoleLimit( VALUE => 12 ) without having to spcify FIELD => "id"
Merge branch '4.2/role-roles'