Always terminate cleanly
Always terminate cleanly

While it is not supported at the moment it is important to clean
up all data before exiting, specially if there are keys or sensitive
data in memory. For this to work we need to exit cleanly i.e.
std::env::exit is not acceptable.

The one exception in place is for early command line argument errors.

equalsraf/pwx