runtime: noescape some functions/variables

This is in preparation of turning on escape analysis for the
runtime.

- In gccgo, systemstack is implemented with mcall, which is not
  go:noescape. Wrap the closure in noescape so the escape analysis
  does not think it escapes.

- Mark some C functions go:noescape. They do not leak arguments.

- Use noescape function to make a few local variables' addresses
  not escape. The escape analysis cannot figure out because they
  are assigned to pointer indirections.

Change-Id: I4b5c223980955b549f519767c35e4adbb196fd48
Reviewed-on: https://go-review.googlesource.com/86244
Reviewed-by: Ian Lance Taylor <iant@golang.org>
5 files changed