runtime: allocate heap metadata at run time

Before, the mheap structure was in the bss,
but it's quite large (today, 256 MB, much of
which is never actually paged in), and it makes
Go binaries run afoul of exec-time bss size
limits on some BSD systems.

Fixes issue 4447.

R=golang-dev, dave, minux.ma, remyoudompheng, iant
CC=golang-dev
https://codereview.appspot.com/7307122
runtime/pprof: adjust reported line numbers to show call sites

This is the same logic used in the standard tracebacks.
The caller pc is the pc after the call, so except in the
fake "call" caused by a panic, back up the pc enough
that the lookup will use the previous instruction.

Fixes issue 4150.
Fixes issue 4151.

R=golang-dev, iant
CC=golang-dev
https://codereview.appspot.com/7317047