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!
I was trying to model these "validation: " sections off of the sections of the [validations spec](http://json-schema.org/latest/json-schema-validation.html). What do you think about just moving `validate_format` to the bottom of the "string" section above?