Make {Question,Answer}Class methods static

This will allow a future clean-up of FileQuestion.
Parameterize QuestionClass on object type

No longer it is assumed that the subclass of a
QuestionClass is the Question type.

This change cleans up casting logic in FileQuestion.
Move gtest tests into test/gtest/ directory