added an overload for #setUp().
altered fields of the class: made two instance fields non-transient to reduce the amount of computation performed during initialisation and unserialisation.
removed unused instance field questionEvents.
altered #castAnswer() as per hodgestar's suggestions. optimised this method by removing the redundant int question parameter as the method can't be called unless the answer being casted is for a valid question.
removed questionType instance field as question types can be determined dynamically.