drain running tasks upon shutdown

HERE BE DRAGONS

Signed-off-by: Max Brunsfeld <mbrunsfeld@pivotallabs.com>
simplify shutdown logic, remove task snapshot

Failure to maintain presence is now simply written to a channel, which is
captured in main and handled similarly to receiving an interrupt. This unifies
the shutdown logic and makes the flow a bit clearer.

Added an integration test suite (this existed by the previous commit but we
failed to check it in), which now exercises failure to maintain presence + the
added draining functionality. Snapshotting the tasks to disk is no longer
a thing.

Signed-off-by: Ted Young <tyoung@pivotallabs.com>
bump deps

Signed-off-by: Ted Young <tyoung@pivotallabs.com>
fix race in downloader test

Signed-off-by: Ted Young <tyoung@pivotallabs.com>
fix similar race in upload test

Signed-off-by: Ted Young <tyoung@pivotallabs.com>
tweak integration test timings, build with -race

also, 80 characters

Signed-off-by: Ted Young <tyoung@pivotallabs.com>