runtime: tidy Context allocation
runtime: tidy Context allocation

The Context object we pass to GetThreadContext on Windows must be 16
byte-aligned. We also can't allocate in the contexts where we create
these, so they must be stack-allocated. There's no great way to do
this, but this CL makes the code at least a little clearer, and makes
profilem and preemptM more consistent with each other.

Change-Id: I5ec47a27d7580ed6003030bf953e668e8cae2cef
Reviewed-on: https://go-review.googlesource.com/c/go/+/207967
Run-TryBot: Austin Clements <7ea35d812706d9213868749011af1ed4fa2f6aa0@google.com>
Reviewed-by: Cherry Zhang <d62e63aa42ce272d7b6a5055d97e942b33a34679@google.com>
Reviewed-by: Alex Brainman <54ba58c8441b5eff861de6b4e5ee46baf086b142@gmail.com>

akutz/go,CAFxX/go,golang/go,CAFxX/go,akutz/go,cloudflare/go,nawawi/go,nawawi/go,akutz/go,golang/go,cloudflare/go,golang/go,golang/go,nawawi/go,CAFxX/go,akutz/go,nawawi/go,nawawi/go,golang/go,cloudflare/go,CAFxX/go,cloudflare/go,cloudflare/go,CAFxX/go,cloudflare/go,nawawi/go,cloudflare/go,akutz/go,nawawi/go,akutz/go,CAFxX/go,akutz/go,CAFxX/go,golang/go,akutz/go,golang/go,cloudflare/go,golang/go,CAFxX/go,nawawi/go