Make gocmd compile even if GOPATH is not defined

This PR makes gocmd build system more flexible:

- It will build even if there's no GOPATH defined in the user's environment. The build system will silently create one nested inside the source folder.
- It allows for a custom executable name
- It allows for the above settings to be persisted inside config.mk (which is not tracked by git)
- Makes test target depend on build (so that you can just run make test)
- Adds a clean target to delete build artifacts

I've added a .gitignore file so that generated files do not appear as "untracked" in git status