Refactor to enable multiple question types

Refactored code to allow for multiple question types. Also implemented
the fill-in-the-blank type, which is functional but still under heavy
development.