We now only demand our exceptions to be is_nothrow_copy_constructible if std::runtime_exception is.
To have nothrow-copy-constructible exceptions, we inherit from std::runtime_error which can cope with arbitrary-length error messages. Intermediate strings are built with static functions and then passed to the actual constructor.