Improve flexibility of exception hierarchy and reporting.

* Gambit's base Exception class is now derived from std::runtime_error
  instead of std::exception
* InvalidFileException now (optionally) takes a string giving information
  about the parse failure
* The Python implementation of read_game() reports the exception string
  describing the parse failure