Fix compilation for 64-bit (serializing type with to/fromJson to JSON string).
Attempt to fix compilation of the libev driver.
Fix signature of the assignment operator of TaskLocal. Fixes #432.
Work around CTFE limitation (labeled break).

DMD error: Assertion failure: 'e != EXP_CONTINUE_INTERPRET && e != EXP_BREAK_INTERPRET' on line 975 in file 'interpret.c'
Process ":htmlescape" in Diet templates at compile time if possible.
Protect m_ownedObjects by a mutex as unregisterObject() may be called from a foreign thread.

The GC calls finalizaters in whatever thread the collection happened, which can cause unregisterObject() to be executed in a different thread than where the driver and the object live(d). See also #419.
Add some assertions to catch potential threading issues in the libevent2 driver. See #419.
Add support for Rebindable!T in is(Weakly/Strongly)Isolated. Fixes #421.
Add "Path ~= immutable(PathEntry)[]" to make Variant happy.
Implement RecursiveTaskMutex (not performance optimized).
Treat Throwable as a weakly isolated type (allowed to pass between threads).

Although this imposes a hole in the type system, it is necessary for many practical applications.
Fix HashMap to handle null keys.
Reimplement thread management/shutdown and start worker threads by default. See #419.
Streamline thread shutdown handling and don't wait in the signal handler for all threads to shut down.

Also replaces the implicitly "__gshared" s_core.m_eventLoopRunning by a thread local s_eventLoopRunning. This sometimes caused threads to not exit when they should. See #419.
Add an example for setTimer. See #434.
exitEventLoop(true) doesn't wait for the other threads anymore and by default now only the current thread's event loop is exited.

Waiting for other threads resulted in a hang when exitEventLoop(true) was called from a thread other than the main thread.