Source ticks

This patch introduces "SourceNote" tickishs that carry a reference to the
original source code. They are meant to be passed along the compilation
pipeline with as little disturbance to optimization processes as possible.

Design decisions:

* Use -g for generation of source ticks. It's free and fits with the
  intended end result (generation of DWARF).

* Using the name "Debug" internally for the whole framework. Might create
  confusion with the plethora of other debugging options, generally
  referring to debugging GHC.

* The coverage pass can only produce one of HPC, SCC or source notes. That
  is probably unnecessarily restrictive.

* This pass creates *lots* of tick nodes. This patch already removes
  duplicated and overlapping source ticks, which gets rid of something
  around 80% of them. Possible optimization could be to make Tick carry
  a list of Tickishs instead of one at a time.

* We count the number of times a source note is floated out - as per the
  causality semantics any source notes with a count > 0 is redundant
  strictly speaking, but I find it useful to keep them around.

* Keeping ticks from getting into the way of optimisations is tricky.
  The changes in this patch work around most situations that I could pin
  down, generally aiming to float ticks up, but never lose them. We still
  get +.7% time in nofib - but there are no big outliers, so it might just
  be certain simplifications firing in a different order.
Remove TickBoxOp

Dead code
Source ticks (Stg)

This is basically just about continuing maintaining source ticks after
the Core stage. Unfortunately, this is more involved as it might seem,
as there are more restrictions on where ticks are allowed to show up.

Design decisions:

* We replace the StgTick / StgSCC constructors with a unified StgTick
  that can carry any tickish.

* For handling constructor or lambda applications, we generally float
  ticks out.

* However for bindings we float ticks inwards and even discard them for
  constructors, as there is no good place to put them (mkTopStgRhs,
  mkStgRhs). The only real argument against it would be that for
  non-top-level bindings, the allocation cost ends up not being covered
  by the tick in question.
Core notes

These tickishs are meant to carry the (simplified and prepared) Core
through the later compilation stages. This involves a few slightly awkward
constructions:

* We take the easy route here to just point into the middle of the
  existing Core code. This obviously means we will probably end up
  keeping this data alive for quite some time.

* We only annotate the interesting control flow points, which are
  bindings and case alternatives.

* In order to establish an identity and later perform sub-expression
  checks, we safe a binder (of the binding or case) with the case
  constructor (if applicable, otherwise __DEFAULT).
Source ticks for Core dumps

This patch allows source ticks to refer to --ddump-to-file Core dumps, so
we can have debugging data refer directly to places in the Core. The
implementation is slightly tricky, as we couldn't find a way to get Pretty
to generate line number information for us. Instead, we now generate
"annotations" into the dump that get stripped out later, yielding line
numbers as we go along.

Note we use the same mechanism as the notes here to refer to position in
Core.