add mshinwell's allocation profiling branch

From Mark:
```
1. Use -allocation-tracing to ocamlopt.

2. Run with OCAMLRUNPARAM=T

3. Either:

 external decode : unit -> unit
   = "caml_dump_allocation_tracing_arrays"
 ...
 Pervasives.at_exit decode

or: run under gdb, break on [exit] or similar, then run:
 call caml_dump_allocation_tracing_arrays(0)

4. Copy and paste the output into two files, one for minor, one for
major, and strip off the first column which says "minor" or "major".

5. Run through the decoding script (below).  Syntax:
 ./decode.sh <executable> <allocation output file>

--

#!/bin/bash

set -eu -o pipefail

exe="$1"
allocs="$2"

commands=$(mktemp)
lines=$(mktemp)
nums=$(mktemp)
addrs=$(mktemp)

cat $allocs | sed 's/,.*//' > $addrs
cat $addrs | sed 's/^/inf line */' > $commands
paste <(sed -e 's/.*,//' $allocs) <(gdb $exe -batch -x $commands) | \
 sed 's/__/./g' | \
 sed 's/<caml\([A-Z]\)/<\1/g' | \
 sed 's/ starts at address /: /' | \
 sed 's/and ends at/->/' | \
 sort -k 1 -n -r
```