deploy / undeploy / update on the ControlledDynamicWebAppCluster

This works & tested.  However, need to discuss the following

=> resize etc the cluster.  Currently, the war will not propagate to new cluster members.  We should at least store the URL from where it was fetched and auto-push. 
=> are there any subclasses (Cluster of ...) that need these as well?
=> What if the war file at the URL changes? or vanishes?  what is the predictble behavior?
more important question as you note is what should we do about entities which are starting up, or about entities which are created in the future.

the latter is not too hard, i think we should do something like:

            Map<String,String> newWarsMap = MutableMap.copyOf(getConfig(WARS_BY_CONTEXT));
            newWarsMap.put(targetName, url);
            setConfig(WARS_BY_CONTEXT, newWarsMap);

(this could be put in a mutex block if we wanted to be absolutely sure updates are atomic.)

the former is trickier.  there are a few options for how to handle it.  you could record which members are not in a running state, launch tasks to block on them either running or going away, and block on that happening.  but that gets tedious.

but i think the best thing to do is to launch the `deploy` task on all `JavaWebAppSoftwareProcess` instances, irrespective of state.  so this task might fail if entities are changing state -- good, that is better than complex tracking here IMHO.  (an operator or higher-level policy could see that failure, and then retry.)

if we need stronger assertions then we should be to make sure that `deploy` at the individual app-server level works irrespective of what state it is in.  (e.g. if it needs to block during startup, it does so *at the app-server level* not at the *cluster* level.)