Reduce synchronization in LocalDateTime.toDate()

java.util.Date uses TimeZone.getDefaultRef() internally, mostly when
using deprecated constructors or deprecated field accessors.
TimeZone.getDefaultRef() is synchronized, concurrent calls to
LocalDateTime.toDate() can thus come with a costly
synchronization/blocking overhead.

This patch reduces the need to get the default time zone by adding a new
LocalDateTime.toDate(TimeZone zone) method, as well as by using a
java.util.Calendar in toDate()'s DST correction code.

These changes make it possible to convert LocalDateTime to
java.util.Date without any synchronization overhead.