Enforce Go style and idioms pre-commit

* `pre-commit` rejects commits which fail `gofmt` or `go vet`.
* `prepare-commit-msg` adds `golint` warnings as comments to a git commit
  message for review.