MIRTH-3305, MIRTH-3396: Changed how code templates get added from extensions. Instead of appending to the references list on start, the data type plugins (and all other extensions) now implement a CodeTemplatePlugin class, which is instantiated and added in LoadedExtensions before anything else. Connectors also use this method, so the File/HTTP reference items code has been moved to separate classes.
MIRTH-3393
Rewrote the locking scheme for performing channel tasks. Each channel now has its own executor that so even if one of its tasks gets stuck, it will not block tasks for other channels. Deploy, undeploy, start, stop, pause, resume, start connector, stop connector, and halt are now tasks at the EngineController level instead of at the Channel level. Most of the task execution code in Channel has been removed. Deleting messages and deleting the channel itself are now channel tasks as well.

MIRTH-3334
Multiple channels can now be deployed/undeployed simultaneously. If one channel gets stuck during the start of a deploy or the stop of an undeploy, it will no longer block other channels from being deployed or undeployed. If a channel fails at the stop portion of an undeploy task, it will no longer be undeployed.

MIRTH-2761
MIRTH-2913
Deploying and undeploying channels can now be halted. However there is currently no way to halt the channel from the Administrator if it is stuck at these steps since they do not show up on the dashboard. The server side code is there but we need to determine what to show on the Administrator

MIRTH-3236
This bug shouldn't be possible anymore since removing messages is now a channel task and cannot occur at the same time that a channel is starting, even if it was undeployed. 

MIRTH-3398
This shouldn't be possible anymore because in addition to the new locking scheme, we are now only passing the channel Id into the deploy task. Within the deploy task it will retrieve the Channel model object. If the channel was deleted that object will be null. If a deploy request is sent at the same time as deleting the channel now, it will either end up doing nothing, or a cancellation exception will be logged. 

MIRTH-3399
Improved the exception messages, handling, and logging when channel task errors occur. StartException, StopException, etc now only occur at the channel level instead of at the connector levels too. This prevents an exception from being wrapped multiple times in a StopException (and similarly for the other types). Connector tasks now always throw a ConnectorTaskException regardless of the task type since the type can be inferred from the Channel level exception and stack trace. The messages displayed when halting channels has been improved as well.

MIRTH-3397
The global deploy and shutdown scripts now run for each channel independently, similar to how the global preprocessor and postprocessor works. This will require users migrate their code.