Work more on building a general Question type

The essential features of this are that it is capable of constructing
itself from YAML, and has abstract methods for getting and testing user
responses.

However, it must also be extended to construct instances of subclasses
based on the category field.