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.
Does this really work for rebind, using a non-static class? I'd have written:

    private static class MasterChildFinder implements Callable<BrooklynNode> {
        private BrooklynClusterImpl entity;
        MasterChildFinder(BrooklynClusterImpl entity) {
            this.entity = entity;
        }
        @Override public BrooklynNode call() throws Exception {
            return entity.findMasterChild();
        }
    }

However, on rebind that might well inject the dynamic proxy rather than the impl, so it might fail on rebind because the proxy does not implement `BrooklynClusterImpl`!