(Some cleanup in date formatter code.)
(Added some more time zone setting tests.)
Added support for xs:date/time/dateTime formatting in DateUtil. Also fixed some javadocs there.
(Some version history improvements.)
If the incompatible improvements configuration setting is at least 2.3.21, the ?iso_... built-ins won't show time zone offset for java.sql.Time values anymore, except those that look like ?iso_..._z. The variations ending with _z are new in this release, and they force showing time zone offset, except for date-only values, where ISO 8601 doesn't allow that.
Added missing javadoc about ?iso_... built-in behavior change with incompatible_improvements 2.3.21.
?string now supports formatting date/time/datetime values with XML Schema format with ?string.xs, ?string.xs_z (forces showing time zone offset), ?string.xs_nz (forces hiding time zone offset). ?string.xs doesn't show time zone offsets for java.sql.Time and java.sql.Date vales.
(Some more test for string.xs)
1. Implementation + test for new builtins: ?is_date_with_unknown_type, ?is_date_only, ?is_time_only, ?is_datetime, ?date_if_unknown,  ?time_if_unknown, ?datetime_if_unknown

2. string.xs didn't fail with unknown date type
3. Minor unknown date type error message improvements
(Added notes regarding PostgreSQL "time with time zone" columns)
Added alternative name to ?is_date, as the current one is a misnomer: ?is_date_like

Renamed recently added ?time_only to ?time
Documented: ?is_unknown_date_like, ?is_date_only, ?is_time, ?is_datetime, ?date_if_unknown,  ?time_if_unknown, ?datetime_if_unknown.
Date/time/date-time terminology cleanup in the Manual, JavaDocs and error messages. Various smaller additions about using "xs" and such. Note that ..._format value "xs" doesn't work yet, but it's already documented.
Generalized date/time/dateTime formatting mechanism so that it's possible to use "xs" as date/time/datetime_format setting value, and in general anything that you can use with ?string.<format> or ?string(<format>).
Some further cleanups in date/time/date-time formatting, and additional work towards user-defined formats
TemplateDateFormat-s work with TemplateDateModel-s instead of with Date-s. This is expected to be required for application-domain-aware formatting, where the TemplateModel-s may hold the application-domain meaning of the date (like it's not just a date-time, but the time of departure).
Added new date_format/time_format/datetime_format-s: iso, iso_z, iso_nz. This also means that now we can parse such dates. Minor improvements in date/time related code and related documentation.
Fixed bug introduced while refactoring: ?date/?time/?timestamp default format isn't safe to evaluate lazily.
Stricter ISO 8601 parsing, tests, some more documentation.
Changed xs_z, iso_z, etc. to ..._fz (for "force zone"), because "z" could be misunderstood as showing the date/time in UTC (like 12:30:00Z).
(Updated TemplateDateModel FTL type name to march terminology)