Permit single argument append calls

Not very useful, but it's permitted by gc
and there are existing tests for it.
Use *types.Named pointer to differentiate types

The same "pkg.Name" may exist within multiple
scopes in a package, so we must not key just
on that in the type map.

adonovan is working on go/types/typemap, which
should be a good fit for llgo's llvm/runtime type
maps.

Also: for named types not declared in the package
scope, don't specify the global's name.