compiler, runtime: include ptrmask in GC roots

Change the list of registered GC roots to include a ptrmask,
and change the data structures to be easily used from Go code.
The new ptrmask will be used by the Go 1.8 GC to only scan pointers.
Tweak the current GC to use the new structures, but ignore the new
ptrmask information for now.

The new GC root data includes the size of the variable.  The size is
not currently used, but will be used later by the cgo checking code.

Change-Id: I9307f21a9fedc8c88e7afd5c1284675ed77fd406
Reviewed-on: https://go-review.googlesource.com/41075
Reviewed-by: Than McIntosh <thanm@google.com>
3 files changed