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!
Super minor nitpick, but would you mind alphabetizing "date" here so that it's above "date-time" (and again where it appears in the list of constants below)?