Further encapsulation of question engine.

Overloading the istream and ostream really cleans up a lot of the main function.