Exceptions: Refactored cannot_open_file_exception and bad_file_format_exception

The two created their what()-messages inside a temporary stringstream,
ultimately returning a pointer to invalid memory. This is now fixed.
The implementation was simplified and now directly inherits from
std::runtime_error, getting rid of the need for string handling.