When linking a singular Incident Child type, delete other Links

Investigations have long been limited to being applied to a single
Incident. We've allowed Blocks to apply to multiple Incidents since
1.0.0.  Starting in 2.4.0 we allowed the same behavior for Incident Reports.

In c991958 a comment was added saying that this code looked "wrong
absolutly" for passing the correct arguments to ProcessTicketLinks.

In baa9f2c the comment was removed and the code 'fixed' to specify the
child and the incident id.  However, this is completely incorrect.
Since 3.4 (years before this code was written) the Delete Link path has
ONLY accepted a target or a base because you're calling DeleteLink on
the other side of the link (you call it on the target object, passing
the base or call it on the base object passing the target).

This resulted in the delete never running for the entirety of the 2.4 or
2.6 series of RTIR.  As a result, while you could never apply an
Investigation to two Incidents during Investigation creation, you could
backdoor yourself links to two Incidents by clicking Link on an
Investigation page and ignoring the "Can't specifiy both base and
target" message that shows up at the top of the page, before the message
saying that a link was created.

You could also use the Link action in the Investigations box on an
Incident page.  This provides a list of active Investigations and when
you pick an Investigation which is already linked to an Incident, the
old code would not remove it from the old Incident and you would end up
with an Investigation linked to two Incidents.  The same error about
specifying both base and target would be shown to the user.

In 3.0, this code runs if the Incident Child Type isn't marked Multiple.
By default, this provides the intended behavior that Blocks and Incident
Reports may belong to multiple Incidents, but that Investigations may
not.  If you've been relying on the backdoor behavior in 2.6, you can
specify explicitly that Investigations can belong to multiple Incidents
using the RTIR_IncidentChildren configuration.
If you're displaying a single optional option, use a checkbox

This removes the weird "unselectable radio button" we currently use by
default when lauching an Incident.  This runs into a bug #24156 where
submitting the Investigation to add more attachments or without
adding a Correspondent will lose the checked state of the radio button.
Similarly, adding a different Incident in the Other box would present an
unselected radio button.

Both of these happen because the core RT handling of radio buttons
assumes quite logically that radio buttons will have a single value.
RTIR includes a text input with the same name as the radio button,
causing this to be wrong and ColumnMap to fail to select the radio
button.

I've also added a note wondering why we have Radio Buttons here.
As soon as you have a Multiple case, we use checkboxes (correctly) and
if you're required with a single value we use a hidden input to force
the value to be passed along.

If we had a use case for this element where we presented 3 items and you
could only choose one, then radio buttons would be sensible, but I
haven't found that in the code.  The only way that happens is if you run
RTIR allowing multiple Incident parents and then change the
configuration.  In that case, the code doesn't behave as well as it
could.

We may be able to drop this code and remove the jQuery uncheckable
plugin which would be nice.
Update the logic about displaying Checkboxes vs Radio Buttons.

SelectIncident displays a box to enter an Incident ID if you can choose more
than one Incident (Multiple) or if it is passed any Incidents to display.  This
conflicts with Radio Buttons.  If there are valid reasons for the Radio Button
display, then we need to rename that Other box, but I'm not sure why we use
Radio Buttons in this UI.  See the logic table below.

    Singular/Multiple - Can choose only one or more than one Incident?
    Required/Optionsl - Do we need to provide an Incident?
    One/Many - SelectIncident receive a list of 0, 1 or more Incidents
               to display. In the 0 case, it always just shows a text input.

    1 | Multiple | Required | One  |  Checkboxes
    2 | Multiple | Required | Many |  Checkboxes
    3 | Multiple | Optional | One  |  Checkboxes
    4 | Multiple | Optional | Many |  Checkboxes
    5 | Singular | Required | One  |  Hidden input
    6 | Singular | Required | Many |  Radio (needs Other if list is incomplete)
    7 | Singular | Optional | One  |  Checkboxes
    8 | Singular | Optional | Many |  Radio with the unselectable option?

I haven't found a live use of SelectIncident that allows only one
Incident, but is passed multiple incidents to render. That's the only
place I can see rendering a Radio button.  I've even tried to force it in the
RTIR UI by changing to non-standard RT configurations.

Rewriting the If/elseif logic to use this table passes all tests, but no tests
appear to have been changed when SelectIncident was updated with
RTIR_IncidentChildren support, so this needs more testing.
more investigation tests with single/multiple/none incidents
Merge branch '2.9/incident-children' into 2.9-trunk