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.
This method name does not imply the node should have been master (though the parameter name does).

No strong feelings, but perhaps it should be renamed `demoteMasterNode(oldMaster, mode)`.
Or it could return the oldState, and have the assertion in the caller.