Master now removes config/host/job node during undeploy instead of creating tombstone
Removed tombstoning logic from Agent codebase.

Removal of job node in ZK is now used to determine if the actual job should be stopped
and removed, instead of using tombstone logic.
Do trust checks on each Agent config update.

In order to mitigate problems caused by removing tombstones, do trust checks each
time we synchronize Agent config from ZK. Trust check is implemented as a transaction
of two checks - one check ensures that the version of /config/hosts/<host>/jobs
has not changed since we read it just before the check, and the second one checks if
the /config/id/<clusterId> node is present.
Bootstrapping script.

Added a script to bootstrap a new Helios cluster using namespaces and stuff.
DefaultZooKeeperClient now checks for cluster ID node

At startup, DefaultZooKeeperClient checks that the specified cluster
ID node is present. If it is not, all operation will throw
IllegalStateException. If it is present, a watcher is created for the
node so we will get notified if it is deleted.

If no cluster ID is specified, it will not check for the node, and
operate like normal.
ZK cluster id can now be passed to master/agent with --zk-cluster-id
Fixed some tests to work with new clusterId stuff.
Added agent test to ZooKeeperClusterIdTest
Bump the job tree root version on all job changes.

To ensure that the transactional check in Agent job synchronization bits actually does something,
let the Master touch the job tree root node every time there's a change to its children, so that
this node's version (which we can check for) is always equal to its cVersion (which we can't).
Refactored parts of the new clusterId logic.

Do it enterprise way!
Merge pull request #206 from spotify/rculbertson/tombstone-rebase

Rculbertson/tombstone rebase