Expose answers as part of Api::State

Add State and Previous Question spec
Answers are Model::Answer objects
Fix bug in PreviousQuestionPage generation (incorrect responses were being provided)
Move build_question_pages to private method inside Api::State
Expose answer object instead of response string in PreviousQuestion
Implement #humanize for Salary answer
Implement #humanize for MultipleChoice answer

Fetch the human readable version of each choice, not computer-readable one
Default #humanize to value for answers who don't have it specified
Rename scenarios to scenario_sets

Each file in the scenario folder is not a scenario, but rather a set of scenarios
Lazy evaluation of smartdown flow and smartdown engine in Api::Flow

We want to use smartdown flow in several contexts:
- executing the flow via the engine
- just getting the flow
- (future) just getting scenarios

Lazy evaluation of those methods means we don't do unnecessary
loading for any of those specific use cases
Scenarios as part of Api::Flow

Exposed as scenario_sets in the Flow object
Lazily evaluated
Each scenario_set has a name and exposes its scenarios
Each scenario has a description, questions, and outcome
Each question has a name and answer
Allow for question groups and multiple questions per page

Scenarios should test for question groups
Scenarios should visualise when questions are asked as part of one page
Expose name as part of question Api

In order to check that the right questions
are being asked for in the scenarios,
we need the name of the question to be exposed
in the flow
Allow scenarios descriptions to have space between # and text