Split them up
Merge branch 'split_module_executor' into slim_down_module_manager

This abstracts some of the required steps to run a module into another class.
The idea behind this is that we want to change how modules execute so that they
can execute in their own process rather than their own thread.  Ideally these
differences will be abstracted into implementations of a ModuleExecutor.  This
is the first step in separating out a ModuleExecutor from Module Manager.