compiler: deref receiver types in mangled names

This was the original intent, as reflected in the long comment at the
start of names.cc, but I forgot to implement it.

Also, remove a leading ".0" from the final name.  That could occur for
a method whose receiver type starts with 'u', as in that case we
prepend a space to the mangled name, to avoid confusion with the
Unicode mangling, and the space turns into ".0".

Also, if the Unicode encoding would cause the final to start with
"..u" or "..U", add a leading underscore.

Patch gotest to not get fooled by some names.

The result of these changes is that all symbols start with a letter or
an underscore.

Change-Id: Ibbaaad74c3f75b8cb8623b48f0904d248fb40bd5
Reviewed-on: https://go-review.googlesource.com/90015
Reviewed-by: Than McIntosh <thanm@google.com>
4 files changed