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 
It'd probably be good to add a `default:` case here to return an `error`. :+1: