Add <method>_hook feature

This allows Question subclasses to perform adjustments based on how they
were instantiated. For example, a Question loaded via YAML may not have
access to all of the Python types necessary to function, and so can
convert the relevant pieces from YAML-representable types.