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. We still get +1% time in nofib - but there are no big outliers
  so it *might* just be certain simplifications firing in a different
  order. Needs further investigation.