Release process

Adds a makefile target to build releases for different target architectures/OSes.

Also adds a script to upload the result as a github release.
We could make this depend on `*.go` and then it would rebuild if it needed to - this would also obviate the need for calling `make clean` in the release script.