Answers are now typed objects

Question models know answer type
Raw answers parsed into Smartdown::Model::Answers
as they are processed by Engine.
Model::Answer objects correctly handle comparing against strings

Predicates generally compare answers against strings, so we want
the comparison methods of Answers to parse the compared value before
evaluating the comparison.
SetMembership predicate evaluates using :== on state member

instead of using :== on the value string. This means we can correctly
compare strings with answer objects.
Answers quack more like simple type objects

Implements :to_f, :to_i, :+, :-, :*, :/ on answer objects.
use Comparable in Answer::Base
Merge pull request #50 from alphagov/typed-answers

Typed answers