compiler, runtime: harmonize types referenced by both C and Go

Compiling with LTO revealed a number of cases in the runtime and
standard library where C and Go disagreed about the type of an object or
function (or where Go and code generated by the compiler disagreed). In
all cases the underlying representation was the same (e.g., uintptr vs.
void*), so this wasn't causing actual problems, but it did result in a
number of annoying warnings when compiling with LTO.

Change-Id: I9dbb285c1d038e9fd28bc2fc4584b7c2064d7100
Reviewed-on: https://go-review.googlesource.com/c/160700
Reviewed-by: Ian Lance Taylor <iant@golang.org>
20 files changed