Improved disconnection/reestablish logic: Bug #733544

This code fixes a couple of corner cases discovered by a user and
myself regarding connection drops and reestablishment.

1. When BYE received from the server, begin disconnecting immediately.
Otherwise it's possible for the server to send a BYE and drop the cx
ungracefully (or the FCLOSE is never received) and leave the
ClientSession active.  By disconnecting immediately, Geary can cleanly
break the session and immediately reestablish another one.

2. Remove the DISCONNECTING state from ClientSession.  There was an
asymmetry in the state machine with regards to how local disconnects
were handled (and exposed by #1).  Analysis showed that the
DISCONNECTING state was unnecessary since there was no need to wait
for events to come back from the ClientConenction.  Now the FSM
transitions straight to BROKEN when disconnecting.

3. Flushing pending commands in the replay queue was being determined
by the remote close reason.  This is insufficient in the case of BYE
because it's a non-error close but, because it's initiated by the
server, pending commands should not be flushed.  An additional close
flag deals with this case.