Brooklyn node and cluster upgrade

Merges #266 (cluster upgrade) with work I've been doing on node upgrade.

Builds on #260 so please ensure that is merged first.

Needs further testing (by me at this point) but wanted to push it in case @neykov you have comments, especially on the last commit.
Should we just set this on the memberSpec when we're creating the replacement members, rather than calling here?

Could the memberSpec config have said "master", or `--perist clean`?!
Overriding things in the memberSpec to do exactly what we want safely feels better.