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
Add the Tracepoint type to the RTS API
Add the Backtrace heap object to the rts
Add a rCurrentBacktrace register
Add pushBacktrace function

pushBacktrace(Capability*, Tracepoint*)
  1. allocates a new current StgBacktrace heap object
  2. At its head is the Tracepoint passed into this function as
  argument.
  3. At its tail is the old current backtrace

This is rather preliminary functionality which will allow us to test
things out. It will require major changes later