Implemented module-level configuration.

* Implemented a module-level Configuration object
* Removed the $GLOBAL_THREAD_POOL global variable
* Added a global_thread_pool accessor to the module config
* Renamed NullThreadPool to PerThreadExecutor
* Moved PerThreadExecutor into its own file
* Updated UsesGlobalThreadPool to use new module config
* Updated all tests to use new module config
* Updated all tests with new name of PerThreadExecutor