ensure all cleanups are executed (in order)

This is useful when a top-level cli app wants to do some cleanup of its own after a subcommand
has been executed
Merge pull request #138 from koreno/cleanup

ensure all cleanups are executed (in order)