go.tools/importer: generalize command-line syntax.

Motivation: pointer analysis tools (like the oracle) want the
user to specify a set of initial packages, like 'go test'.
This change enables the user to specify a set of packages on
the command line using importer.LoadInitialPackages(args).

Each argument is interpreted as either:
- a comma-separated list of *.go source files together
  comprising one non-importable ad-hoc package.
  e.g. "src/pkg/net/http/triv.go" gives us [main].
- an import path, denoting both the imported package
  and its non-importable external test package, if any.
  e.g. "fmt" gives us [fmt, fmt_test].

Current type-checker limitations mean that only the first
import path may contribute tests: multiple packages augmented
by *_test.go files could create import cycles, which 'go test'
avoids by building a separate executable for each one.
That approach is less attractive for static analysis.

Details:  (many files touched, but importer.go is the crux)

importer:
- PackageInfo.Importable boolean indicates whether
  package is importable.
- un-expose Importer.Packages; expose AllPackages() instead.
- CreatePackageFromArgs has become LoadInitialPackages.
- imports() moved to util.go, renamed importsOf().
- InitialPackagesUsage usage message exported to clients.
- the package name for ad-hoc packages now comes from the
  'package' decl, not "main".

ssa.Program:
- added CreatePackages() method
- PackagesByPath un-exposed, renamed 'imported'.
- expose AllPackages and ImportedPackage accessors.

oracle:
- describe: explain and workaround a go/types bug.

Misc:
- Removed various unnecessary error.Error() calls in Printf args.

R=crawshaw
CC=golang-dev
https://golang.org/cl/13579043
diff --git a/ssa/ssa.go b/ssa/ssa.go
index 25d22d7..2610ead 100644
--- a/ssa/ssa.go
+++ b/ssa/ssa.go
@@ -22,11 +22,11 @@
 // A Program is a partial or complete Go program converted to SSA form.
 //
 type Program struct {
-	Fset           *token.FileSet              // position information for the files of this Program
-	PackagesByPath map[string]*Package         // all loaded Packages, keyed by import path
-	packages       map[*types.Package]*Package // all loaded Packages, keyed by object
-	builtins       map[types.Object]*Builtin   // all built-in functions, keyed by typechecker objects.
-	mode           BuilderMode                 // set of mode bits for SSA construction
+	Fset     *token.FileSet              // position information for the files of this Program
+	imported map[string]*Package         // all importable Packages, keyed by import path
+	packages map[*types.Package]*Package // all loaded Packages, keyed by object
+	builtins map[types.Object]*Builtin   // all built-in functions, keyed by typechecker objects.
+	mode     BuilderMode                 // set of mode bits for SSA construction
 
 	methodsMu           sync.Mutex                // guards the following maps:
 	methodSets          typemap.M                 // maps type to its concrete methodSet