Define a custom %CustomFieldGroupings

This makes use of the custom RTIR::Tickets object type so that groupings
only apply in the 4 RTIR queues (as usual, magic implemented in RT::IR).

These seem to make sense as groupings, rather than putting all the CFs
in Basics as RTIR has done forever.  We're using Details to group the
'rest of the CFs' because Customer is on both Investigations and Incident
Reports and you can't easily specify it to be in one group in one Queue
and another group in the other Queue.
Override of _GroupingClass to implement RTIR::Ticket

Register RTIR::Ticket 'core' groupings of Basics, Dates and People.
RTIR never shows a Links box, so we don't register that.

The rest of this code is essentially a complicated trawl to get a Queue
so we can call OurQueue and find out if this ticket is RTIR or not.

If we have a ticket, great, use the QueueObj.  If not, try to find a
Queue hanging off the CustomField. If that fails, we just return what
core returned, which is just ref $record.

Generally, we'll always get a ticket, except during Creation from
RT::CustomFields::LimitToGrouping when we'll get a CustomField object
with no id but with ContextObj set for us.
Pass back Defaults calculated

We need to show defaults in Grouped Custom Fields also.  This means
passing back our calculated Defaults so that
EditCustomFieldsCustomGroupings can use them.

Primarily just renaming Defaults to ConfigDefaults and ARGS to
CFDefaults in the hopes of making this easier to read.

CFDefaults is passed back by reference to be used in any code that wants
to show CF Groups during Ticket Creation.
Show Basics CFs when displaying RTIR's CF List

We'll call EditCustomFieldCustomGroupings after EditCustomFields on all
the other pages.  There's one page (Scripted Actions) which wants to use
AllGroupings, similar to what core's SelfService Grouping has to do
because we don't show all boxes in SelfService.
Update display to use Custom Field Groupings

RTIR has two primary displays (Display and Incident/Display) which get
identical "show Basics CFs and then show all the grouped CFs" code and
we add Dates and People CFs to the ShowDates/ShowPeople code copied from
core.
Code to pull defaults and pass to CustomFieldGroupings on Create

During creation, RTIR reads configs from RTIR_Config.pm and those are
parsed by code in RTIR/Elements/EditCustomFields.  We take that data and
pass it off to EditCustomFieldCustomGroupings which passes it to
EditCustomFields and ensures that grouped CFs get the same "RTIR
Default" code that ungrouped CFs do.
Update Edit Page for CustomFieldGroupings

RTIR basically squashes all of the core Modify*.html pages into one
monolithic Edit.html, so we show the Custom Groups for editing and we
put Date and People CFs in the appropriate part of the Edit page.

This relies on a core patch that allows us to pass @Groupings to
EditCustomFieldCustomGroupings.
EditCustomFieldCustomGroupings can pass Queue not QueueObj
Now that IP is grouped, it has a different field_name
Merge branch '3.2/customfieldgroupings'