Various fixes

- call program.CreatePackages, so we get declarations for imported packages
- implement I2E vs. E2E comparisons, and convertI2E. non-empty interfaces
  not yet represented with itab.
- convert raw function pointers to pair-of-pointers on evaluation

I'll work on proper interface representation now. They won't cache (yet).
Fix and simplify ChangeType

There's nothing to do other than associate
the new type; otherwise the value will have
identical representation.
Various fixes

- Fix handling of method calls
- Reenable global constructors for init functions
  and package-level vars.
Generate program initialization code at compile time

Previously we were creating an "appending" linkage
array in runtime, containing a list of init functions.
This was causing difficult to debug issues when the
declared array is greater than size one (I think that's
the issue, anyway).

Instead, now, we just generate a function that calls
each of the (transitively) imported packages' init
functions. go.tools/ssa gurantees an init function for
each package, and we know the order up front, so this
is safe to do (and simplifies things somewhat).