Fix support for GOPATH with symlink in it.

I made this CL because I needed both symlink support and prefix but then I went a bit overboard with the refactoring. If you dislike the refactoring I am open to make a more scoped CL.

Side note: it would be appreciated to have a LICENSE file in the repository.

Thanks

----

- Refactor the code to remove globals.
- Rename functions and variables to make the code more readable.
- Densify code by using call in conditions.
- Add -verbose to help diagnose problems.
- Add support with symlinks in GOPATH.
- Add -prefix to add a relative directory, for example 'third_party' with is
  useful to keep the repo clean.
- Change prefix in logger.

Add small unit test.