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!
Is `"obscure-thing" is not a valid format, must be one of date, date-time, [etc].` ok?