Extract helper to a static function

ExampleGroup needs to use it as well to catch exceptions in before and
after context exceptions.
Improve error handling readability

The std namespace is explicitly qualified to increase contrast with
CCSpec exception. Comments are added when wrapping other C++ exceptions
as the exception_ptr calls are not easy to decipher.
Handle exceptions in before all hooks

Exceptions in before all hooks fail all enclosed examples.
Handle exceptions in after all hooks
Remove redundant namespace qualifier
Use reference for API consistency
Avoid using the mutable member wherever possible

The mutable members should only be used by the nullary run method.