(FACT-327) Move Process.waitall to Execution.exec

Commit d24504e8 added functionality for waiting on child processes if we
aborted command execution early, but this only really applies to command
execution. This commit relocates the waitall functionality to
Execution.exec so it's clearer what we're waiting on and why.
(FACT-327) Extract command execution base class
(FACT-327) Extract windows/posix execution classes