Date Question Optional Ranges

## Who created this

- @karlentwistle 
- @FriedSock 

## Agile Planner Ticket

[Date question range inconsistent with SA](https://www.agileplannerapp.com/boards/105200/cards/8703)

## How do I use this

To control the range of years selected you can supply 2 optional arguments to date questions: `from` and `to`.
These can take the form of absolute values, eg.

```markdown
[date: baby_due_date, from: 2010, to: 2015]
```

Or relative values (from the current year), eg.

```markdown
[date: baby_due_date, from: -4, to: 1]
```

The default values for `from` and `to` are relative years: `-1` and `3` respectively.

## How do I test this

1) Edit the Gemfile in smart-answers so that it uses a local version of smartdown based on the path. By default in the GDS VM this is /var/govuk/smartdown

````
#if ENV['SMARTDOWN_DEV']
  gem 'smartdown', :path => '../smartdown'
#else
#  gem 'smartdown', '0.8.2'
#end
````

2) Checkout this branch (date_question) in smartdown
3) Bundle!!!
4) bowl smart-answers
5) Edit one of the example smartdown_flows animal-example-multiple or animal-example-simple with a syntax error. I used question_4.txt in  animal-example-simple

````
# That's not a cat!!

[date: thing, from: 2011, to: 2040]

# Go back and do not collect $200 and get rid of bulldog

[choice: question_1, alias: type_of_feline]
* lion: Lion
* tiger: Tiger
* cat: Cat
* sphynx: Sphynx
* meowth: Meowth

* type_of_feline in {lion tiger cat} => question_2
* type_of_feline is 'meowth' => question_5
* otherwise => outcome_safe_pet
````

Now navigate to the flow and check that the year for selection changes to what you're expecting.

The smartdown adapter presenter for the question does return dates, and has been changed in the corresponding PR https://github.com/alphagov/smart-answers/commit/7af15cdaa775e0a2abad24601316729d56e56d25