Fix possible stack corruption in std.net.curl

The HTTP and SMTP structs are used as value types. The delegate created
in onReceiveHeader stores a pointer to this HTTP as it needs to access
this.p so we potentially leak a reference to a stack variable here.

As the Impl struct is always allocated on the heap via RefCounted
storing a pointer to Impl is not an issue. So we move the delegate
generation out of HTTP and into impl to make sure it only stores a
pointer to Impl which will stay valid even if the original HTTP object
is moved.

Also reset some delegates in _basicHTTP and _basicFTP to avoid leaving
references to stack variables around.
Merge pull request #1757 from jpf91/fixCurl

[urgent] Fix possible stack corruption in std.net.curl