Actually build things the dynamic way

Things went back to being statically linked again once I added an
explicit -static flag to the vanilla way.
Load the right object files in ghci

When we have a dynamic ghc, we need to load the dynamic object files
Make adjust_ul handle BCOs

We never ran into this before, because replace_osuf was almost always
False (i.e. we were almost always using the vanilla way when using
bytecode, so adjust_ul wasn't needed). Now that we can have the dynamic
way on by default many tests were failing because of it.
Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghc
Add a ToDo comment
Produce new-style Cmm from the Cmm parser

The main change here is that the Cmm parser now allows high-level cmm
code with argument-passing and function calls.  For example:

foo ( gcptr a, bits32 b )
{
  if (b > 0) {
     // we can make tail calls passing arguments:
     jump stg_ap_0_fast(a);
  }

  return (x,y);
}

More details on the new cmm syntax are in Note [Syntax of .cmm files]
in CmmParse.y.

The old syntax is still more-or-less supported for those occasional
code fragments that really need to explicitly manipulate the stack.
However there are a couple of differences: it is now obligatory to
give a list of live GlobalRegs on every jump, e.g.

  jump %ENTRY_CODE(Sp(0)) [R1];

Again, more details in Note [Syntax of .cmm files].

I have rewritten most of the .cmm files in the RTS into the new
syntax, except for AutoApply.cmm which is generated by the genapply
program: this file could be generated in the new syntax instead and
would probably be better off for it, but I ran out of enthusiasm.

Some other changes in this batch:

 - The PrimOp calling convention is gone, primops now use the ordinary
   NativeNodeCall convention.  This means that primops and "foreign
   import prim" code must be written in high-level cmm, but they can
   now take more than 10 arguments.

 - CmmSink now does constant-folding (should fix #7219)

 - .cmm files now go through the cmmPipeline, and as a result we
   generate better code in many cases.  All the object files generated
   for the RTS .cmm files are now smaller.  Performance should be
   better too, but I haven't measured it yet.

 - RET_DYN frames are removed from the RTS, lots of code goes away

 - we now have some more canned GC points to cover unboxed-tuples with
   2-4 pointers, which will reduce code size a little.
expand tabs
fix a warning
Fix a dependency bug in the build system

I've been meaning to track this one down for a long time.
Occasionally a build will fail with an error about a .so library being
truncated; the reason was that we weren't tracking the dependencies of
the GHC stage2 .so library correctly.
untab
Put the DynFlags in a global variable for tracing; fixes #7304

This is an ugly kludge to make a DynFlags value available for the
'trace' functions. It may not be the value we really ought to use,
but it'll be good enough for the pretty-printer to use.

Ideally we'd pass the real DynFlags down to all the trace calls,
but this will do for now at least.
Fix copyArray# bug in old code generator
Fix copyArray# bug in new code generator
Merge ../ghc
Make the -ferror-spans flag dynamic
Remove unnecessary warning suppression
Fix comment

patch submitted by marcotmarcot@gmail.com
profiling fixes
Make the opt_UF_* static flags dynamic

I also removed the default values from the "Discounts and thresholds"
note: most of them were no longer up-to-date.

Along the way I added FloatSuffix to the argument parser, analogous to
IntSuffix.
-fliberate-case-threshold is already a dynamic flag