runtime: copy in MemStats fields explicitly
runtime: copy in MemStats fields explicitly

Currently MemStats is populated via an unsafe memmove from memstats, but
this places unnecessary structural restrictions on memstats, is annoying
to reason about, and tightly couples the two. Instead, just populate the
fields of MemStats explicitly.

Change-Id: I96f6a64326b1a91d4084e7b30169a4bbe6a331f9
Reviewed-on: https://go-review.googlesource.com/c/go/+/246972
Run-TryBot: Michael Knyszek <4473450dc5c88f06e1fb787f303d7805ec2aee65@google.com>
TryBot-Result: Go Bot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Trust: Michael Knyszek <4473450dc5c88f06e1fb787f303d7805ec2aee65@google.com>
Reviewed-by: Michael Pratt <e7f1edc6d5aa9f6c8c377425db8f1a5816cbbb88@google.com>

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