Feature/exits for real

The use of exit! for exiting from a worker job prevents at_exit hooks to be processes. This new implementation makes use of a block instead of the double return fork model to ensure proper exit.