Brooklyn node and cluster upgrade

Merges #266 (cluster upgrade) with work I've been doing on node upgrade.

Ready for review.
Will this work as expected? The `java.net.URLDecoder` is for "HTML form decoding" (e.g. "+" is converted to a space). But quite a few stackoverflow answers talk about just using `URLDecoder` for each part of the URI.

There is also a guava discussion about adding a decoder to complement `com.google.common.net.UrlEscapers` (https://github.com/google/guava/issues/1691) but that functionality is not available in guava yet.

Also, why not pass "UTF-8" as the encoding scheme, rather than calling the deprecated method? The javadoc says "Note: The World Wide Web Consortium Recommendation states that UTF-8 should be used. Not doing so may introduce incompatibilites."