Fix for servers with LOGINDISABLED before STARTTLS

When connecting to a server that advertises LOGINDISABLED in its
CAPABILITIES before STARTTLS, the connection raises an error and
destroys the socket before completing STARTTLS.  This is demonstrated in
the following debug output:

debug: [connection] Connected to host
debug: <= '* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS LOGINDISABLED] Dovecot ready.'
debug: => 'A0 CAPABILITY'
debug: <= '* CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS LOGINDISABLED'
debug: <= 'A0 OK Pre-login capabilities listed, post-login capabilities have more.'
error: Error: Logging in is disabled on this server source=authentication
debug: [connection] Closed

It appears that a return after _starttls was overlooked (since _starttls
will call _login again once the STARTTLS has completed).

Signed-off-by: Kevin Locke <klocke@quantpost.com>
Reattach 'readable' event listener when changing streams

Parser was not unregistering the 'readable' event listener from the old
socket, nor registering it to the new socket when setSocket() was
called.  This caused event handling to stop during the STARTTLS handoff.

Signed-off-by: Kevin Locke <klocke@quantpost.com>
Merge pull request #291 from kevinoid/starttls-fixes

Fix broken STARTTLS