Fixed job cancel and race conditions.

Removed spurious uid argument in call to node.send from
job cancel in SharedJobCluster.

Fixed _schedule_jobs to use 'terminate' variable only while
condition variable is held. This solves client deadlock issues
during shutdown.

Each computation now stores auth code so that dispynode can keep
track of which scheduler is using the node. Without this, dispynode
may not realize that a scheduler (i.e., client in case of JobCluster)
crashed and restarted and sending new computation while it still busy
executing jobs from previous incarnation of scheduler.

Register 'shutdown' method using 'atexit' so both JobCluster and
SharedJobCluster cleanup if possible.