Sync the ckeditor output before updating messages

This allows the updates to the content to be respected in the data seen
by Scrips.
Roll back on failure to Comment, as Correspond does
DryRun now wraps in a rollback, and records all transactions

DryRun was previously limited to only running correspond or comment
transactions.  Change it to take a block of actions to run, which it
wraps in a transaction and rolls back at the end.  By additionally
tracking all transaction objects are created on the ticket, more changes
can be simulated, and TransactionBatch changes can be found.

Note that only transactionbatch scrips directly triggered by user
changes are visible -- as scrips are not committed, TransactionBatch
changes which would be recorded because of those indirect changes will
not be visible.
Display all scrips which are triggered

Adjust the PreviewScrips and SimplifiedRecipients code to account for
multiple transactions.
Re-use squelching information for future updates to a ticket in same request

Prior to this, information about squelching was only associated with the
initial correspond/comment, and not later changes (such as On Owner
Change), nor TransactionBatch scrips.  When updating tickets via the
web, store the squelching details on the the ticket object, and re-use
them for the lifetime of the object -- that is, the checkboxes now seen
in PreviewScrips for TransactionBatch changes are now effective.
Remove mostly-duplicate code for Rules which can never trigger

PreviewScrips includes a mostly-duplicated block of code to preview
emails produced by Rules, the mechanism behind Approvals.  However, this
code is unnecessary because /Ticket/Update.html is not accessible for
tickets of type 'approval' (the only objects which could currently
trigger Rules in a stock RT), because /Tickets/autohandler redirects all
but a small number of files under /Tickets/ to /Approvals/ instead.
/Ticket/Update.html is not in the whitelist, and thus cannot render for
Approvals.

Furthermore, the code checks $rule->{hints}{class} to determine if it
should display the rule; no rule ever has a ->{hints} set on it, and
never has, since the introduction of this code in 6d14f535.  As such,
even if /Ticket/Update.html were accessible, or some local customization
made use of Rules for something other than Approvals, they would still
not appear in PreviewScrips.

Remove the duplicated and unused code.
Add squelched recipients as preference

User preference to start with squelch checkboxes unchecked/checked on
ticket reply page. This should respect the semi-permanently squelched
address when applying its logic. If set to true, then the page shows
the checkboxes unchecked - which means the email addresses are *not*
getting any kind of mail.
Additionally, it adds a new config option called $SquelchedRecipients
which allows to set it broadly for all users.
'Select All' checkbox for scrips correspondences/comments

At ticket reply page, we have the option to select/deselect who in the
list of people should receive a copy of the reply/comment. This aims to
add an 'all' checkbox which can select/deselect all of them at once.
Make 'select all' check/uncheck bi-directional

If I uncheck "All $thing", and then I re-check all of the items by hand,
then "All $thing" pops back to being checked as soon as I re-checked
the last item.
Merge checkbox click event handlers

Merge "setCheckbox" and "checkboxSetEvent" handlers into single one
function which sets up everything bi-directionally (on both the "All"
checkbox, as well as the individual ones).
Ticket update recipient checkboxes

Fix checkboxes sync state when adding one-time Cc.
Ticket update recipient checkboxes

Move checkbox click event handler to recipient list load's callback.
Merge branch '4.4/squelching-all'