Add version info to binaries

This adds the git tag or commit/branch to all Go binaries. The `version` package can be used to generate a string from this information.

The default `make` target should be used instead of running `tup` directly.

The `make dev` target uses static version information to reduce build time when iterating quickly (tup will rebuild all targets otherwise).

A `make clean` target also exists.
With whats here:

```
$ dirty() { test "$(git status --porcelain)" = "\n" && echo true || echo false; }
$ git init -q
$ dirty
false
$ echo foo > foo.txt
$ dirty
false
$ git add foo.txt
$ dirty
false
$ git commit -qm "add foo.txt"
$ dirty
false
$ echo bar >> foo.txt
$ dirty
false
```

versus:

```
$ dirty() { test -n "$(git status --porcelain)" && echo true || echo false; }
$ git init -q
$ dirty
false
$ echo foo > foo.txt
$ dirty
true
$ git add foo.txt
$ dirty
true
$ git commit -qm "add foo.txt"
$ dirty
false
$ echo bar >> foo.txt
$ dirty
true
```