Support ghc-7.8

process-1.2 added field delegate_ctlc to System.Process.CreateProcess
data so we instead use System.Process.shell to create the CreateProcess
and then record update syntax to redefine the fields we care about and
which are present in both process-1.1 and process-1.2.

Therefore making the code nicely compatible with both version without
resorting to CPP extension and `#if`s
Build with warnings