Add testCanInstallMultipleVersionsOnSameMachine
initial support for the docker entity

bumped the jclouds.version to 1.7.2-ea-brooklyn.2
support for docker in jcloudsLocation
Added AbstractApplication.doStart method to override of core start logic whilst keeping Lifecycle maintenance
Merge pull request #1257 from andreaturli/docker

initial support for the docker entity (DO NOT MERGE)
fix showing of generic failure message if details of entity failure not available,
and show a better message
allows start effector to take a string (including comma separated list) or list of strings,
which means the "start" effector can be used from the gui or the rest api;
also improves list parsing (to support json and be better about comma-separated lists)
and some other start logic (disallows starting a software process at a location incompatible with its current location)

BACKWARDS INCOMPATIBILITY note, when resolving a *list* of spec strings, it is no longer supported to have a comma-separated list as an entry, or to pass a nested list;
contexts which accept a list of strings now call RegistryLocation.resolveList(String), usually wanting json style forgiving dropped brackets and double quotes when unambiguous,
but note things like byon notation may need to be double-quoted and internal double quotes backslash-escaped -- e.g.
`"[ \"byon:(hosts=\\\"192.168.0.1\\\",user=bob)\", \"byon:(hosts=\\\"192.168.0.2\\\",user=bob2)\" ]"` (as a CLI bash argument or a java string)
have JmxSupport use the same machine detection routines (to skip provisioning machines),
and switch from Optional to Maybe so we get nice traces on errors
richer semantics for DynamicTasks.waitForLast
Duration can return null (useful for contexts where 'forever' is meant by null)
support swallowing failures in DynamicSequentialTask, and make sure stop does this, including new test for cases where stop failed when process refused to stop
cleaner way to capture failure in stop, part 1
cleaner way to capture stop failures, part 2 - we can let intermediate tasks fail, then manually kick off subsequent tasks.
significant changes to how the queue for DynamicSequentialTask instances is drained, clearer API with no need to cancel unsubmitted tasks.
stop-process swallows failure, but stop now throws if process fails, due to DST checking children even if secondaryJobMaster.isDone()  - part 3
now we swallow failures within the task itself, and some care to capture and propagate the failure, so we resolve the asymmetry between stop-process children failing and stop-process itself failing, but what we really want to do is specify that certain children tasks are allowed to fail (coming in next part); this is part 4
finally, stop-process failures don't break stop if the machine is destroyed, and don't stop restart, because we have ability to mark a task as inessential meaning it won't cause its parent to fail - part 5
open task when effector invoked. also clean up methods for opening tabs.
reset the backbone model for tasks when server-side object omits fields
(fixes bug where blockingTask and blockingDetails weren't being cleared if they were simply dropped from server-side object)
fix cassandra datacenter integration test - tries to connect to target machine to resolve IP address to ensure consistency w listen address
drop back to cassandra 1.2.14, to try to fix datacenter integration test, and update mirror url's etc