Support packages with names not matching their directory

That is, packages with a name that doesn't match the base of import path.
It uses build.Import() to figure out the package name from the source code.

Fixes bradfitz/goimports#19.

It's still fast, but there'll obviously be a performance hit. I don't see a faster way of solving this in the worst-case, but I am open to suggestions. There are definitely opportunities for optimization for average cases.