Use .filter() to protect against jQuery's lack of escaping

Similar to 69bad2a0, this works around the inability to guaranteedly
escape characters in jQuery attribute selectors.  For example, this
would cause categories with spaces or . in them to display no
sub-options when those options were rendered as a list.

Instead of shoving an unknown set of characters after the starts-with
selector, use .filter() to iterate over the possibilities and check for
starts-with using .indexOf().
Ensure than an empty requestor is preserved across "Add More Files"

The use if $ARGS{Requestor} || 'something' as the default value for the
Requestor field means that if emptied, and the create does not go
through -- either because the "Add More Files" button was pressed, or
fields vailed validation, or an extension halted it -- then the
Requestor will pop back to being the current user.

Preserve the user's wishes, by using a defined-or to only set the
default if it was _unsubmitted_.  Note that this is a minor behavior
change, in that external links to Create.html?Requestors=&Queue=1
previously got the current user as the requestor, instead of no
requestors.  However, this is an unlikely scenario, and they are now
actually getting what they asked.

This leaves the remaining defaults to use ||; changing them is left to a
more comprehensive branch.
Stop defaulting the due date to the creation time in REST

If no DefaultDueIn existed on queue 1, the due date was set to the
current date and time.  Only provide a Due date if DefaultDueIn was set.
Send dates back to the user in the user's own timezone

Resolves issues #20334
Detect auto-generated mail correctly when there are multiple Precedence headers

Example in the wild of multiple Precedence headers includes:

    Precedence: never-bounce
    Precedence: bulk

When $head->get() is called in scalar context, only the first value is
returned.  Instead, return true if any of the multiple possible values
match.
Correct documentation of CheckForAutoGenerated() to include all headers
When merging instances with identical $Organization, do not qualify names

Qualify() is meant to ensure that objects which are name-unique keep
their own "namespace" when merged across different RT instances.
Importing an RT into one with an identical $Organization is a fair sign
that they are from the same provenance, and thus should merge Groups and
Queues, instead of creating duplicates.
Show Wikitext CFs in bulk edit as we do Text CFs
Translate the full title string, not as piecemeal bits

Not all languages have the same singular and plural forms of
open/closed; see I#14736.
Switch from deprecated MIME::Head->set() to ->replace()

MIME::Tools 4.x (in 1998) deprecated ->set, in preference to the more
explicit ->replace() call; ->set is no longer documented in POD, in
fact.  Switch all places which use the former to using the latter.

Fixes I#18417
Provide the RT version in mailgate user-agent, in addition to LWP's

Setting ->agent with a trailing space causes LWP to _also_ append its
own version, as it did previously.  This commit thus merely causes us to
include additional information.

Fixes I#18420.
send_via_mailgate's return should act like send_via_mailgate_and_http

a7a0e02c switched to call RT::Interface::Email::Gateway rather than
using bin/rt-mailgate; however, it returned 0/1/-75 for
failure/success/tmpfail instead of the exit code ($?).  Since all
callsites shifted the return code by 8 and accepted 0 as "success," all
calls succeeded.

Fake a $?-like return code from send_via_mailgate; left-shifted 1 for
failure, left-shifted -75 for temporary failure, and 0 for success.

Fixes I#19156.
Preserve the current selection in "Add Columns" and "Show Columns"

The selection in "Show Columns" is approximate, and fails in the case
where a column appears more than once.  Guaranteedly selecting the
correct row would require re-deriving the new row number from the last
button pushed -- which, while possible, would require repetition of
code, and is unnecessary in most cases.

Fixes I#16972.
Warnings avoidance for when no "Show Columns" is selected
Suppress base64'd content in non-english "Content changed from..." message

The previous check only functioned if the user's language was English,
as the call to ->SetSubValues returns a localized string.  Rather than
special-casing on the wording, instead override the message based on the
return code.

Fixes I#24665.
Never return 'Changed (base64) to (base64)' as a message

Similar to d24effb1, but even more so -- the end-user cares not for
giant base64 blobs.
Perform user/group searches case-insensitively

Fixes I#27835.
Fix indentation
Don't alter @statuses when escaping

The existing line to escape statuses altered @statuses in the process,
causing ->IsValid() to return false on the escaped versions, and thus
failto display any statuses which contained quotes or slashes.  Store
the escaped versions in a different variable, to ensure that un-escaped
status names are passed around everywhere, and only escape them
as-needed.

Fixes I#29056.
I#27649: "New ticket in" button with fixed width

When using a different language than English, the translated string might
be longer or smaller than the length('New ticket in'), so it needs to stretch
dynamically instead of having a fixed size.

The source for this issue is on the fact that rudder skin - differently from
the other ones - set the width with a selector including submit buttons (that
is, "input[type=submit]") which causes it to take precedence over the existing
rule in base/nav.css.