Added the ability to specify a Migrator class for plugins, which is invoked on startup to run any migration code for the plugin.

Added the ability to migrate private connectors to 3.0.0 by using reflection to look for a 'migrate3_0_0' method on the connector properties class in the private connector plugin. Made several of the utility methods in ImportConverter3_0_0 public so that private connectors can use them in their migration code.

Renamed DatabaseSchemaMigrationException to MigrationException

Renamed the previous ServerMigrator class to 'Migrator'.

Moved code in DefaultMigrationController that performs the schema initialization and migration into a new ServerMigrator class that extends the Migrator abstract class. This was done so that the core server migration will follow the same pattern as plugins that define a single Migrator class that manages the schema version and runs the appropriate migration code.
Issue: MIRTH-2647
MIRTH-1599: Removed the Entities class since it is no longer used.
Moved JavaScriptExecutor methods and variables to JavaScriptUtil and made them static.
Removed JavaScriptExecutor and all previous constructed instances. They now reference the method statically. 
Now all executions of JavaScriptTasks go through the one executor in JavaScriptUtil. Connectors, filter and response transformers no longer need to have their own local JavaScriptExecutor.

The executor service now uses a CachedThreadPool so multiple scripts can be run simultaneously for the executor. This fixes a bug where all deploy, shutdown, preprocessor, postprocessor scripts would block one another.

Moved JavaSciptUtil and JavaScriptScopeUtil from com.mirth.connect.server.util to com.mirth.connect.server.util.javascript. Now all the javascript helper classes are in the same package.
Issue: MIRTH-2658
Commented out test code for the MessageExportPanel/Dialog since we don't want it in our production releases.
Issue: MIRTH-1699
MIRTH-2608: Removed debug line from migrateWebServiceSenderProperties.
The controlExecutor in Channel now has its core thread count set to 0 so that the control thread will be disposed after no start/stop/deploy/etc tasks have been started in 60 seconds. Before, every channel's control thread would be alive the entire time the channel is deployed, which is an obvious waste of resources.

The destinationConnectorExecutor and recoveryExecutor in Channel have been combined into channelExecutor as there was no need for RecoveryTask to use its own executor.

The queueExecutor in Channel has been removed and we now create the thread on our own. The queue thread is simple enough that there is no reason to use an executor service.

The executor used in VmDispatcher if response timeout is not 0 is now created on deploy instead of on start. This way it can be shutdown on undeploy. It is also using a cached thread pool now to allow threads to be disposed when they are not currently in use. Without this, a thread could be alive even if the channel was stopped and would not be disposed until the channel was undeployed.

VmRouter now uses a static cached thread pool instead of creating a new single thread executor each time a message is routed. This could have caused excessive garbage collecting when many messages are being routed in a short timespan.

WebServiceConnectorService now uses a static cached thread pool instead of creating a new single thread executor each time importWsdlInterface is called. This allows threads to be reused and cuts the overhead of creating a new executor each time.

DataPruner is now creating threads directly instead of creating a new single thread executor each time a prune job is started. It was not making use of any ExecutorService specific features. This also eliminates any of the overhead shortens the amount of time that the thread remains alive.

AlertWorker's actionExecutor now has its core thread count set to 0 so that the action thread will be disposed after no actions have been taken for 60 seconds. Otherwise each AlertWorker could be leaving an additional thread alive even if it had not seen any action for a long time.

Fixed bug in EventListener where the workerThread would not be disposed when the listener is shutdown.

The status updater executor is shutdown when logging out.
Issue: MIRTH-2659
MIRTH-2516: Modified the "Get Serializer" code template so that the serialization and deserialization properties are passed in by default.