SoupSocket: make handshaking methods gio-like

and update SoupConnection to use them
SoupConnection: make methods gio-like

Port the SoupConnection methods to be gio-like, using
GAsyncReadyCallback for the async ones, and returning GErrors rather
than libsoup status codes. Add internal-gio-like SoupSocket connect
methods for the SoupConnection methods to use.
SoupSession: propagate GErrors to callers

When using soup_session_send() or soup_session_send_async(), propagate
underlying GErrors to the caller, rather than constructing fake
SOUP_HTTP_ERROR errors.