Use HTTPClientResponse.disconnect instead of HTTPClient.disconnect to avoid an invalid state in the response object.

In case of an SSL stream error and dropBody() throwing an exception, the connection was disconnected without resetting the response object, resulting in the assertion in HTTPClientResponse.~this() being triggered.
Protect access to the m_waiters map in Libevent2ManualEvent.onThreadShutdown.
Ad missing support for serializing ubyte[] as BsonBinData.
Remove outdated VisualD project file.
Update TODO list.
Fix Task.this(Task). Fixes #406.
Update change log and bump version number.
Remove the old EventedObject interface.
Ensure that no messages can be sent on the same connection by a WebSocket whose handler has thrown an exception. See #407.
Never keep alive HTTP connections where the handler has thrown a non-Exception Throwable. See #407.
Avoid useless double-serialization. See #412.
Fix access violation in Libevent2TCPConnection when reading from a closed connection.
Avoid trying to drop the response body in the HTTP client when the connection is already closed.
Always close connection when an exception was thrown after starting to write a HTTP server response.
Set a maximum read buffer for Libevent2TCPConnection to avoid huge memory consumption and other side effects.

See http://forum.rejectedsoftware.com/groups/rejectedsoftware.vibed/thread/7927/ for "other" side effects. Note that this issue has another root cause, which is that .empty should not be true unless the read buffer has been fully emptied. Currently it is true as soon as the connection is closed by the remote.
Fix the semantics of Libevent2TCPConnection.empty, fix places where `empty` and `connected` were confused, and clarify the documentation.

`empty` so far had the same semantics as `empty`, which has caused pending incoming data to be dropped prematurely. Empty will now stay false as long as any incoming data hasn't been read, even if the remote has already closed the connection.

A side effect is that now calling `close` is now mandatory to free all resources, as this is now deferred until after all data has been read. This is only important for outgoind connections, as incoming connections are automatically closed upon Task termination.
Add HTTPServerSettings.useCompressionIfPossible, disabled by default.

Since there are still issues with GZIP compression and since compression may not be desired in many cases, it is now disabled by default and can be enabled using either this setting or by manually setting the "Content-Encoding" response header.
Remove the deprecated HTTPServerSettings.sslKeyFile/sslCertFile properties.
Remove "Signal" compatibility aliases.
Add "mainSourceFile" and "systemDependencies" fields.