Add extra stack trace information to Executors and friends.
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).
Merge pull request #184 from spotify/drewc/context

Added Thread Context bits
Make sure AgentServer actually executes shutDown

Also install signal handlers so if they block, and you
hit control-c again, we make sure it dies.

Normally, if Runtime.exit() gets called it runs teardown
handlers and the like, but if you call .exit again while
this happens, you get bupkis.  That's why we call halt().
Refactored parts of the new clusterId logic.

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

Rculbertson/tombstone rebase
Merge pull request #205 from spotify/drewc/callshutdown

Make sure AgentServer actually executes shutDown
Include bootstrap.py in helios-master deb

The helios-master debian package now puts bootstrap.py
into /usr/share/helios/bin.
Added an option to force cluster bootstrapping.

Now it's possible to force the creation of required clusterId node and its parents even if some of
there nodes are already there, possibly including other clusterIds.
[maven-release-plugin] prepare release 0.8.18
[maven-release-plugin] prepare for next development iteration
Merge pull request #210 from spotify/forced-bootstrap-option

Added an option to force cluster bootstrapping.