Add empty module BacktraceTypes.hs and register it with Cabal

Also added BacktraceTypes to the modules reachable from DynFlags.
I can't work out why this dependancy is needed, but the compiler says it is.
Add the Tracepoint type (to BacktraceTypes.hs).
A tracepoint is very much like a SCC in profiling. It holds the name, module and location of the function.
Add new Unique for Tracepoints.

This is useful for fast comparison of tracepoints.
Add TracepointTick to Core Syntax

* Add TracepointTick to Core Syntax
* Add code for printing TracepointTick for -ddump-prep etc
* Add cases for TracepointTick for tickishCounts and tickishScoped.
      both are False at present to let the simplifier do as much
      simplifying as it can. We'll come back and change this if it turns
      out to be a problem.
Automatically add Tracepoints during DeSugaring

* -backtrace causes addTicksToBinds to be called during the DeSugar process
* -backtrace causes addTicksToBinds to create CoreSyn annotated with
   TracepointTicks on all functions. (Exactly the places that -fprof-auto
   annotates with cost centres)
Added StgTracepoint to Stg syntax

* Added StgTracepoint to Stg syntax
* Added print methods for -ddump-stg
* Added entry for UnariseStg. Tracepoints pass are not unboxed-tuple binders so
  there is no need to translate them away
TracepointTick in Core translates to StgTracepoint in Stg
Added empty module StgCmmBacktrace.

This module will contain functions for backtrace support in the Code Generator.
Code generate the tracepoints themselves

*Thread all of the tracepoints added during desugaring through to
 code generation
*At code generation create a c struct for each tracepoint
*Label each c struct with an appropriate c label
Code generate StgTracepoints to rts call "pushTracepoint"

*Arguments to "pushTracepoint" are:
  1. The current capability
  2. The c label for that tracepoint