Add support for client binary on upgrade

Went ahead and implemented this, looking for feedback, how do those file permissions look to you?

ping @SvenDowideit @tianon 
Does `GOOS` actually map reasonably to `uname -s`? (which is what this URL is emulating)

Also, that other bit (`x86_64`) is `uname -m`, which I think we ought to do our best to emulate too.

Maybe a couple `switch` statements would be safer here, just to be sure?