Fold ThenExecutor into Executor
Moves the Executor and Execution classes into their own header files in order to clean up the main Async header.