added Date support in addition to DateTime.
added one more serialization that is not init
Merge remote-tracking branch 'remotes/patefacio/master'

Conflicts:
	source/vibe/data/json.d
Adjust whitespace to match code conventions.
Add support for (de-)serializing Date as BSON and assume Date/DateTime is in UTC.
Add support for the 'Date' type in the BSON (de-)serializer.
If deserializeJson is deserializing a struct of type T and the dsrc json value is null return T.init. The benefit is null for the value of an object will not result in an exception but rather a valid instance. For serialization/deserialization all in vibe this won't happen. But if client side is another language (e.g. Dart where reference types are the norm and null values are the default) it will.
For arrays, unqualify the type to ease deserialization, but return the original qualified type. This allows deserialization of types with `immutable(T)[]`. Unfortunately it requires a cast - but it is safe. I tried to see about making deserialization pure to avoid the cast but that was too big of a change.
similar to structs, default fundamental types to T.init. For floating point this will be in fact something that could be used to determine presence or not of value (i.e. nan). Defaults for strings and ints are at least sensible and will not result in error.
similar to structs, default fundamental types to T.init. For floating point this will be in fact something that could be used to determine presence or not of value (i.e. nan). Defaults for strings and ints are at least sensible and will not result in error.
rebase merge
Merge pull request #336 from patefacio/master

If deserializeJson is deserializing a struct of type T and the dsrc json...
Fix connection delays in the libevent2 driver. Fixes #338.

The 4096 low write watermark caused write operations to stall when no more than 4096 bytes were sent. The current behavior with a zero watermark now has the same behavior as the libev and the win32 driver (i.e. writing all data to the socket before returning from write()). It still needs to be determined if this is relevant for benchmark results and using a higher low watermark should be fixed instead.

Additionally, the more error prone "writeFinished" field has been removed and replaced by an explicit check of the output buffer size.
Add setLogFormat (replacing setPlainLogging in the long run).
Fix version check for using std.net.isemail.
Assume that render!() is safe on 2.064 (all related bugs are now marked as fixed).
fix Issue #338 - keep-alive HTTP requests only served after 40ms

- A deadlock is caused by Nagle's algorithm + delayed ACK and
  the write+write+read pattern (resp header + body + next req)
  when serving 2 HTTP requests on a keep-alive connection.

- Resolved by buffering smaller writes so that responses don't
  get split unnecessary, i.e. blocking in write iff more than
  4kB is buffered.
Merge pull request #338 from dawgfoto/fix338

regression requests on keep-alive HTTP connections only served after 40ms