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.
Use of `keyValue` looks wrong. Are we expecting things like `key1, val1, key2, val2`?
Need to increment i by 2 each time, or do `i*2` and `i*2 + 1`.