Replace JoinLatch with KillHandle for exit code propagation

Some notes about the commits:
* ```Reimplement unwrap()``` has the same old code from ```arc::unwrap``` ported to use modern atomic types and finally (it's considerably nicer this way)
* ```Add try_unwrap()``` has some new slightly-tricky (but pretty simple) concurrency primitive code
* ```Add KillHandle``` and ```Use KillHandle in Task``` are the bulk of the logic.