Handle conversion of next_node_if rules

with responded_with predicate
Support variable_matches predicate
Handle on_condition rules
Add set inclusion predicates
Rendering using templates
Move Parser classes into Parser module
wip
Use tree transforms to perform conversion

A major refactoring which should make it easier to build the remaining
transforms.

Parsing produces a model of the smart answer by repeatedly applying
transormations to the parse tree of the original ruby file.

Each transform produces a new tree with some tree nodes replaced by
model objects representing the corresponding element. For example:

      s(:multiple_choice, s(s(:option, ...)))
   -> s(:multiple_choice, s(Model::Option.new(...)))
   -> Model::MultipleChoice.new([Model::Option.new(...)])

There are still a few cleanups/inconsistencies in this code:

  - Model::Option is given the translated label, wheras other models are
    given the translations and are responsibile for looking up
    translations

  - Need to refactor to isolate unit tests of each transform, as they
    are now independent. At present question_spec covers a lot of
    functionality and other specs actually invoke Parser::Question#parse
    rather than the individual transform.