Support date format, and raise a schema error when an unknown format is in the schema

At present if you accidentally use an unknown format, the lack of an `else` in the `case` [here](https://github.com/gocardless/json_schema/compare/date-format?expand=1#diff-50b1d22f09d5badf9130a7c63a618c46R179) will mean that `valid` is always `nil`, and so you always get a validation error, no matter what your input is. The real problem is in the schema.

I've also added an ISO8601 date format, cause it's pretty useful!
Actually there were some tests I should've added to `validator_test`, which I have now.