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 feels like yet another variant of `DependentConfiguration.attributeWhenReady`. I'd prefer us to have this code just once. For example, in `attributeWhenReady` you can pass in abort criteria, such as the entity being on-fire.

Also see `DependentConfiguration.builder()`. The number of options being passed to `attributeWhenReady` was getting so big that it called for a builder. Should that code re-use the `Tasks.awaitingBuilder` that you use here?