The CompPipeline monad and associated ops
Defined in separate module so that it can safely be imported from Hooks
Output should be to a temporary file: we're going to run more compilation steps on this output later.
We want a persistent file, i.e. a file in the current directory derived from the input filename, but with the appropriate extension. eg. in "ghc -c Foo.hs" the output goes into ./Foo.o.
The output must go into the specific outputFile in DynFlags. We don't store the filename in the constructor as it changes when doing -dynamic-too.