Output line number and column number of syntax error

## Agile Planner Ticket
[Better Smartdown error messages](https://www.agileplannerapp.com/boards/105200/cards/6366)

## What does this do

Previously smartdown output an error message in the form of a filename and asci_tree. Like

````
Parse error in foobar

Expected at least 2 of CALL / ELEMENT at line 1 char 1.
`- Expected one of [CALL, ELEMENT] at line 1 char 4.
   |- Failed to match sequence ('baz' '()') at line 1 char 7.
   |  `- Premature end of input at line 1 char 7.
   `- Expected "bar", but got "baz" at line 1 char 4.
````

Now it will output filename, line number, column number and the asci_tree

````
Parse error in file:'question_2' line:'9' column:'16'

Expected at least 2 of CALL / ELEMENT at line 1 char 1.
`- Expected one of [CALL, ELEMENT] at line 1 char 4.
   |- Failed to match sequence ('baz' '()') at line 1 char 7.
   |  `- Premature end of input at line 1 char 7.
   `- Premature end of input at line 1 char 7.
````

## Steps to reproduce error

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 (better_errors) 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

````
# Are you trained for lions?

[choice: trained_for_lions]
* yes: Yes
* no: No

* type_of_feline is 'lion'
  * trained_for_lions is 'yes' => outcome_trained_with_lions
  * otherwisez => question_3
* otherwise => outcome_tigers_are_fine
````

Note the mistake i've made of using otherwisez and not otherwise

Now navigate to the flow and check that the 'headline' of the error message is pointing at the correct filename and line and column