combined reason with output from strerr so that you get the full information if you only happen to catch the base std::exception
added more descriptive error messages when throwing internal_exception