Test suite for new date parser

Bin all the old tests, a new approach for this is that we have a whole load of dates that we have seen users entering (through analytics) and we want to support the most common of these.

We have a bit of meta-programming to run through all of these dates. Meta-programming is a little complex (for me, at least), but does allow us to have a test for each date without having to actually write a test for each date. Having one test per date means we have one failing test per failing date, so it's easier to assess the health of our code as we can say "7 out of 10 tests are failing" rather than "our test is failing for an unknown number of dates because it fails for one date and then doesn't run the rest"

The second test stubs takes a date with unspecified year and makes sure the date we assume is this year by stubbing Time.
Add Chronic gem

We're going to use Chronic to handle dates, simply because a few more tests in the test suite pass with chronic than with Date.parse and we're trying to write as little date parsing as possible.
Re-write date parsing

User research showed us that some users were using a lot broader date types than we were supporting (specifically, just entering a year, no month, no day) We looked into this a little deeper and found there were a couple of date formats we weren't supporting that people were entering.

Now we have a full test suite for all the dates we want to accept, we can add the code required to make it pass. Date parsing is largely handled well by the Chronic gem, with three notable exceptions:

Chronic parses single years ie `2008` as a time: `20:08`. We never expect users to enter a time into a date field on a finder so we are going to assume that four digits is always a year and so convert it to 01/01/yyyy

Chronic doesn't handle eight digits without delimiters. Since eight digits is an unambiguous date so long as you're assuming ddmmyyyy order we can guess at this by converting dddddddd into dd/dd/dddd. The 'so long as you're assuming' here is based on the analytics for this page which show us that a small number of users have put in 8 digits in a row which can be interpreted as ddmmyyyy. None have done yyyymmdd.

Finally, chronic doesn't handle spaces or full stops to delimit dates so when we find numeric dates seperated by these we convert them to /'s

Then pass the date to Chronic, and rescue nil, which is what is returned if the date is invalid.
Add a test for trailing whitespace
Add test for preceeding whitespace
Use .trim to remove trailing and preceeding whitespace

Remove any unwanted whitespace before we run regular expressions over the date
Merge pull request #122 from alphagov/date-parsing

Improved date parsing