Ensure that system rights do not move to "Status changes" category

RegisterRights checks that a right name is not a pre-existing queue
right before adding it as a new "Status" right.  However, if a right
which is a system right and not a queue right (such as SuperUser) is
used to limit a transition, the category and description are overidden.

When a right name is given, ensure that it is neither a queue right nor
a system right before overriding its category and description.
Make right regiration be specific to the lifecycle type

Lifecycles on non-tickets should not add rights which are scoped to
queues.  As such, defer right registration to the subclass, and ensure
that it gets run once per type by moving it to running at FillCache
time.
Ensure that rights from lifecycles are loaded during RT->Init

Previous to bab8ef2, rights from lifecycles were loaded when
RT::Lifecycle was use'd or require'd -- which, as it happens, was only
in RT->InitClasses.  This is fortunate, because had it been use'd
anywhere, the Lifecycle configuration would have not yet been loaded,
and thus no rights would have been assigned.

bab8ef2 moves rights registration to cache-fill time, which is generally
only upon access of statuses of an object.  This is to late for @ACL
initialdata insersion, however.  Move this earlier, to during ->Init, so
that lifecycle rights are realized early enough.
Add a unified CurrentUserHasright and HasRight method

Many classes cargo-cult similar code; push the common simple
implementation into RT::Record, and remove all straightforward alternate
definitions.
Topics' custom HasRight is easily reducable to a ACLEquivalenceObjects method

RT::Principal->HasRight already provides a simple means to add
additional EquivObject, by calling the ACLEquivalenceObjects method on
the target object.  Rather than rolling a complete custom HasRight
method, provide the equivalent ACLEquivalenceObjects method.
Rights on any of the of a scrip's applied objects is sufficient

Rather than explicitly iterating and checking HasRight on each of the
applied objects, one can check all such objects at once by providing a
suitable ACLEquivalenceObjects method which includes all applied
objects.  This also deals with the implicit RT::System check, as well.
Refactor rights management into a centralized store, and a role

Rights management for existing classes was done ad-hoc, by
re-implementing the same methods in every class which needed them -- a
pattern ripe for refactoring into a role.  At the same time, the
information was centralized into a single %RT::ACL::RIGHTS datastore,
rather than being stored in multiple inconsistent class variables, and
the API for adding new rights was considerably streamlined.
Merge branch '4.2/rights-api'

Conflicts:
	lib/RT/System.pm
        $principal->Type → $principal->Name for role groups