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.
The package `brooklyn.util.collections` feels like the wrong place for `QuorumCheck`. However, I can see it can be applied to arbitrary collections of things.

What was the reason for moving it from brooklyn-core to brooklyn-utils-common? Was it just because it's generic, or because we wanted to use it from somewhere else?