compile, runtime: permit anonymous and empty fields in C header

Permit putting structs with anonymous and empty fields in the C header
file runtime.inc that is used to build the C runtime code.  This is
required for upcoming 1.13 support, as the m struct has picked up an
anonymous field.

Doing this lets the C header contain all the type descriptor structs,
so start using those in the C code.  This cuts the number of copies of
type descriptor definitions from 3 to 2.

Change-Id: I726d49856dd10f7ae15d994716b67b5e24a450d0
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192343
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
12 files changed