HA uses shared timestamp (last modified time), and negotiates concurrent starts, and handles former master recovery

resubmit of https://github.com/brooklyncentral/brooklyn/pull/1487, adding related code review comments from https://github.com/brooklyncentral/brooklyn/pull/1464, and solving multi-master situations
Presumably `@VisibleForTesting` - looks like it would be really bad to call this in production, as it calls all writes to be ignored rather than just ignoring exceptions on writes. Worth javadoc to that effect.