Add getWorkerTask functions

They provide a way to easily create a task in a worker thread and get a handle to it.

Signed-off-by: Luca Niccoli <lultimouomo@gmail.com>
Make task events consistent when starting new tasks is involved.

Nested task starts caused inconsistent task event orders (startA->startB->endB->endA instead of startA->yieldA->startB->endB->resumeA->endA).
Add first implementation of an optimized URLRouter.

The new routing algorithm is disabled by default, use VibeRouterTreeMatch to enable.
All routes are combined into a single DFA, enabling O(n) matching vs. O(n*m), as in the previous algorithm (n=length of URL, m=number of routes). The assembly of the DFA graph is still too slow, though.
Fix 64-bit compile errors.
More 64-bit compile fixes.
Make generating stack traces (Exception.toString()) in the HTTP server optional.

The new HTTPServerOption.errorStackTraces option is used to control this behavior. Stack traces are enabled by default for backwards compatibility reasons.
Make logging arguments lazy to avoid evaluating costly log message arguments when not necessary.

In particular, calling the costly Exception.toString() method, which is often used in debug messages to provide extended exception information, is to be avoided when the minimum log level doesn't include debug messages.
Use a DictionaryList for HTTPServerRequest.files to enable multi-file uploads.
Get BSON serialization to work during CTFE half way.

LittleEndianToNative doesn't work for CTFE, so it doesn't work, yet.
Refactor, fix @byName for arrays/AAs and add @asArray for the serialization code.

- Using a new SerializableFields template to simplify iteration over composites
- Added @asArray to force serialization of a composite as a flat array instead of an AA
- @byName now also works for enum array/AAs in addition to enum fields
Add a first version of an ORM with a MongoDB driver for the start.

The current proof-of-concept functionality is limited to insertion and simple queries.

The main goals, which are not achieved by the existing solutions for D, are the avoidance of memory allocations for optimum performance and the use of statically checked query expressions, at least for the most common queries. Avoiding memory allocations is achieved by making use of templates and related meta programming tools and by using direct serialization of D types instead of storing a database specific data format in memory. Note, however, that this is still dependent on the database driver and the current MongoDB driver does perform some allocations.
Implement ORM.update() for simple field set updates.
Change query and update expressions to be passed as values instead of alias arguments.
Start to implement an in-memory driver for the ORM system.
fix failed http listener getting added to globals

doesn't it make more sense to just add a listener to the global list when it did not fail to start listening with it ?
Implement query/update for the in-memory ORM driver and tidy up unit tests.
Some more clean-up and doc comments for the ORM module.
Implement new query syntax.
Implement initial ORM support for table row references.
Work around pure inference issue in DMD 2.065.