A couple more small refactorings
Split the Hsc phase into two subphases

The goal is that the second subphase will be run twice when using
-dynamic-too
Change how -dynamic-too works

We now run the tail of the pipeline twice, rather than trying to
do both ways in lockstep.
Add some extra sanity checking to the (l)hs->o rules
Fix -dynamic-too: Outputt to the dyn file when output_spec is SpecificFile
Remove a now-redundant hack
Re-enable a flag-consistency check

I'm not sure why it caused problems before, but it's fine now.
Simplify away some old -dynamic-too stuff from the previous approach
Don't pass -dynamic-too to GHC when compiling C files
Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghc