This patch splits Parallel by introducing a new file called Executor.h and Executor.cpp.
Executor.h defines parallel infrastructure, but hides all concrete executor implementations in a cpp file inside of an anonymous namespaces so they can't leak out.