Valid HTML for emailed dashboards

Commit b0ec8b3 added the opening <div> to satisfy the assumptions of
/Elements/Footer, but /Elements/Footer is not used when emailing the
dashboard due to RT::Dashboard::Mailer disabling Mason autohandlers.
This meant dashboard emails ended with the opening <div> and never
closed <body> or <html>.

Additionally the Footer and PageLayout *are* used when viewing
dashboards in the browser, so the extra opening <div> forced the footer
and remaining page content as a child of the "#body" div instead of a
sibling.

Fix this comedy of errors by properly closing the HTML document when in
email (with no footer) and letting the Footer close PageLayout's opened
"#body" div as expected when in the browser.
Failing test demonstrating incorrect MIME word decoding with quotes

Extra quotes appear around MIME words containing special chars, such as
a comma.  See [rt3 #23813].
Avoid adding too many quotes around decoded MIME words

As demonstrated by the tests in the previous commit.

This case, and much more, is handled better by
4.2-on-4.0/protect-more-chars-while-decoding-headers, but that branch is
destined for 4.2.  For now, simply check the leading and trailing
snippets around the matched word for quotes.

See [rt3 #23813].
Add a quick callback to allow you to stop an Approval

Useful to force people to provide a Note.
Show filename and line in syslog only when the level _is_ debug

… instead of only when it _isn't_.  The commit which introduced logging
to syslog, b5956dc, had this backwards from the start.
Log the process id at the beginning of each log line

This helps differentiate multiple web server processes when untangling
logs.  It's very useful for tracing mail flow more quickly.
A quick tool for pulling out the most useful lines relating to mail from an RT log
Don't check for strict/warnings if a shebang is OK and the shebang isn't perl

This prevents bogus strict/warnings tests on bash scripts, for instance.

The only file this change affects at the moment is
devel/tools/rt-parse-mail-log.
Use the first directory we find instead of "rt-*" so extension tarballs work

There should be only one directory for well-behaved tarballs.

Additionally, die if we can't find a directory to chdir into when
unpacking instead of falling back silently to the current directory.
TicketSQL queue-specific CF syntax is CF.Queue.{Name} not CF.{Queue}.{Name}

This bug was introduced by bd2bbef, but only manifests when QUEUE is
passed to RT::Tickets->LimitCustomField.  Such an invocation is never
called in core RT.
rt-email-group-admin: Load users by email address after trying name

All of the examples in the usage use --user email@address, although the
individual subcommand usage does state that they are "unames".  While
many users in RT have a username equal to their email address, this is
non-obvious in the provided examples.  Simply make --user take a name or
an email address of an existing user.
rt-email-group-admin: Autocreate users if necessary

The command is much friendlier if you can specify any email address to
--user and have it autocreate a record for you.

I avoided using RT::User->LoadOrCreateByEmail to preserve preferred load
order (although it _shouldn't_ really matter) and use a correct Comment
rather than the misleading one in the existing method.
Merge branch '4.0/dashboard-email-html' into 4.0-trunk
Merge branch '4.0/mimeword-decoding-quotes' into 4.0-trunk
Merge branch '4.0/skip-approval-action-callback' into 4.0-trunk
Merge branch '4.0/standard-log-message-tweaks' into 4.0-trunk
Merge branch '4.0/mail-log-parse-dev-tool' into 4.0-trunk
Merge branch '4.0/docs-from-extension-tarballs' into 4.0-trunk
Merge branch '4.0/limit-custom-field-queue-syntax' into 4.0-trunk
Merge branch '4.0/rt-email-group-load-user-by-email' into 4.0-trunk