Files copied from https://github.com/golang/go/blob/5f0a9ba1342674b3209c13035b5aa39a96dbd80c/src/go/internal/srcimporter/srcimporter.go at commit 5f0a9ba1342674b3209c13035b5aa39a96dbd80c.
Used in k8s.io/kubernetes/test/typecheck. Need to copy here, as it's marked as a go/internal library.
Only modification is to remove the go/internal/srcimporter import alias.
NewImporter returns a new Importer for the given context, file set, and map
of packages. The context is used to resolve import paths to package paths,
and identifying the files belonging to the package. If the context provides
non-nil file system functions, they are used instead of the regular package
os functions. The file set is used to track position information of package
files; and imported packages are added to the packages map.
ImportFrom imports the package with the given import path resolved from the given srcDir,
adds the new package to the set of packages maintained by the importer, and returns the
package. Package path resolution and file system operations are controlled by the context
maintained with the importer. The import mode must be zero but is otherwise ignored.
Packages that are not comprised entirely of pure Go files may fail to import because the
type checker may not be able to determine all exported entities (e.g. due to cgo dependencies).