If the channel revision can't be retrieved in DonkeyEngineController.getChannelStatusList(), we no longer set the revision delta since it is unknown.
Issue: MIRTH-2834
MIRTH-1655: Modified SocketUtil so that the default local address is no longer "127.0.0.1". Also only bind to the local address if it exists (isn't necessary, but more correct).
Users can now select the channel name from a combobox when a channel recipient is specified in the alert edit pane. Channel id is stored in the AlertAction now instead of channel name.

The alert channel pane now sorts the channel in a case-insensitive manner.

The alert worker no longer tries to send alerts to blank recipients.
The alert worker now uses channelId directly instead of looking it up with channel name.
Issue: MIRTH-2835
Fixed filter exceptions always showing up as transformer exceptions. Now we use an array to wrap the phase string so java still has a valid reference.
Issue: MIRTH-2836
Added an Authorization Plugin extension point.  Only one Authorization Plugin can be loaded, and any user that is authorized must exist in Mirth Connect in order to be successfully logged in.
Issue: MIRTH-2837
MIRTH-2839: Increased min/max width of the Connection column to 104 to accommodate three digits for the connection count.
MIRTH-2559: Modified the HL7 v2.x response validator to set the status to QUEUED rather than ERROR when an empty/blank response is received.
Fixed message recovery so that the last server to process the source message is the only server that can recover a message.
Issue: MIRTH-2792
Renamed XML Conversion error event type to Serializer.
Renamed error event types: Preprocessor to Preprocessor Script and Postprocessor to Postprocessor Script.
Added error event types Attachment Handler, Deploy Script, and Shutdown Script.
Added event dispatches for Serializer, Attachment Handler, Deploy Script, Preprocessor Script, Postprocessor Script, and Shutdown Script.
Any is now an event type instead of using a null set to determine if all event types are active.
Reordered the event types in the UI based on importance and so similar types are grouped together.

When a user selects Any in the error event table, the rest of the event types are disabled. This way we can still store the original settings in case they want to deselect Any.

Made exception handling more consistent for global deploy and shutdown scripts with their channel counterparts.

Removed Donkey EventDispatcher references in Mirth and used EventController instead. Only references in Donkey should use EventDispatcher.
Issue: MIRTH-2840
Changed the capitalization of text inside the Subject parenthesis to make things consistent.

Added a default subject if one is not specified
Issue: MIRTH-2840
Updated mail-1.4.3.jar to javax.mail-1.5.0.jar.  Note that this jar is a dependency of commons-email-1.3.1.jar, which is actually built with javax.mail 1.4.5.
Issue: MIRTH-2841
MIRTH-2838: Fixed issue that caused the channel state to be set to STOPPED before a destination's state was set from STOPPING to STOPPED. This can lead to deadlocks when removing all messages, because the server thinks that the channel is stopped and lets the operation go through.

In the stop(metaDataIds) method, if an exception is caught somewhere while stopping the connectors, only set the channel state to STOPPED if the exception is *not* an InterruptedException. This is because if the channel was halted, that halt operation will eventually stop the channel correctly.

A similar change was made in StartTask when an error occurs. When that happens the connectors are stopped in a rollback attempt, and if an exception happens _there_, we were then calling halt directly. Instead we never call halt from the StartTask; we just let the halt operation proceed as normal (it will set the state eventually). Same thing in the StartTask, only set the channel state to STOPPED if the exception thrown is *not* an InterruptedException.
Modified the appedTransformerScript method to take in a boolean of whether it is generating a response transformer or not. If not, it should add neither the phase code nor the logger code, since the logger is already set from Java. The only reason the logger code is needed is because for the filter transformer, the logger would have been set to filter in Java already.
Issue: MIRTH-2836
MIRTH-2844: When an error occurs in the attachment handler, a ChannelException is now thrown back to the receiver rather than letting the null message process through the channel.
Made a small optimization to only call getSize() once in processFile() because getSize() may not be constant time for all implementations.
Issue: MIRTH-1889
Fixed an overflow issue on the size of a SMBFile.
Issue: MIRTH-2843
Fix problem when one server reprocesses and replaces a message originally processed by another server. The channel stats were being decremented even though the new server had never processed this message.

Stats are now only decremented if the message was last processed by the server doing the reprocessing (and only for the destinations that were processed by the server).
Issue: MIRTH-2792
Fixed DefaultChannelController.ChannelCache.getCachedDestinationName() so that it correctly looks up the destination name by metadata id. Before, it assumed that metadata id was an index position in the channels list of destination connectors.

Changed DefaultChannelController.getDestinationName() to accept channelId and metaDataId instead of connectorId.
Issue: MIRTH-2842