Creates MemberReplaceable

- DynamicCluster extends MemberReplaceable
- ServiceReplacer works against MemberReplaceable, rather than just
  against DynamicCluster
- ControlledDynamicWebAppCluster extends MemberReplaceable;
  means one can associate ServiceReplacer policy with this, rather
  than against the child DynamicCluster (almost).
ControlledDynamicWebAppCluster extends DynamicGroup

- group members of ControlledDynamicWebAppCluster mirrors members of
  child DynamicCluster.
  This allows policies such as ServiceReplacer to be associated with
  ControlledDynamicWebAppCluster, rather than having to be against
  the child DynamicCluster.
ControlledDynamicWebAppClusterTest: non-integration

- Change some of the tests to be non-integration by using a stub
  AbstractController.
- Have just done the quick-wins; more could be converted.
http: allow configuring of connectionTimeout
WebAppMonitor: add waitForAtLeastOneAttempt
EntityTestUtils.assertAttributeEventually: return val
HASensors.FailureDescriptor: add toString
JavaWebAppSoftwareProcess: common util methods
Adds BashCommands.waitForFileContents
Adds copyResource variant with `boolean createParentDir`
Tasks.resolveValue: deep introspect set/iterable
Adds Strings.getFragmentAfter
PR #1345: incorporate review comments
ApplicationResourceTest.testDeleteApplication investigation

- adds better logging (and potentially fail fast), after this test
  failed in buildhive
Merge pull request #1345 from aledsage/fix/various-20140429

Various, mostly motivated by writing yaml apps