Support custom TimeZone for date formatter

Adds an additional `tz` parameter to the `date` form mapping and the `dateFormat` formatter, so users can set a custom `TimeZone` when parsing and formatting form dates. Example:

```scala
Form(single("time" -> date("HH:mm", TimeZone.getTimeZone("Europe/Paris"))))
```

The patch breaks binary compatibility since it changes the `date` and `dateFormat` signatures. However it does not break source compatibility because the `tz` parameter is set a default value (which is the JVM default timezone).