rabbitmq: Do a better job of retrying failed connections.
rabbitmq: Do a better job of retrying failed connections.

Empirically, the retry in `_on_connection_closed` didn't actually work
-- if a reconnect failed, that was it, and the exception handler
didn't get run.  A traceback would get logged, but all its frames were
in Tornado or Pika, not our own code; presumably something magic and
async was happening to the exception.

Moreover, though we would make one attempt to reconnect if we had a
connection that got closed, we didn't have any form of retry if the
original attempt at connecting failed in the first place.

Happily, upstream offers a perfectly reasonable bit of API that avoids
both of these problems: the on-open-error callback.  So use that.

tommyip/zulip,showell/zulip,andersk/zulip,showell/zulip,shubhamdhama/zulip,kou/zulip,rishig/zulip,punchagan/zulip,jackrzhang/zulip,zulip/zulip,hackerkid/zulip,rishig/zulip,tommyip/zulip,jackrzhang/zulip,kou/zulip,hackerkid/zulip,brainwane/zulip,punchagan/zulip,timabbott/zulip,brainwane/zulip,zulip/zulip,synicalsyntax/zulip,synicalsyntax/zulip,eeshangarg/zulip,eeshangarg/zulip,tommyip/zulip,dhcrzf/zulip,brainwane/zulip,dhcrzf/zulip,shubhamdhama/zulip,synicalsyntax/zulip,dhcrzf/zulip,andersk/zulip,dhcrzf/zulip,eeshangarg/zulip,zulip/zulip,dhcrzf/zulip,brainwane/zulip,timabbott/zulip,andersk/zulip,kou/zulip,zulip/zulip,mahim97/zulip,showell/zulip,zulip/zulip,punchagan/zulip,shubhamdhama/zulip,eeshangarg/zulip,mahim97/zulip,andersk/zulip,kou/zulip,timabbott/zulip,mahim97/zulip,hackerkid/zulip,mahim97/zulip,punchagan/zulip,rht/zulip,showell/zulip,shubhamdhama/zulip,kou/zulip,hackerkid/zulip,tommyip/zulip,hackerkid/zulip,shubhamdhama/zulip,eeshangarg/zulip,showell/zulip,timabbott/zulip,rht/zulip,mahim97/zulip,kou/zulip,zulip/zulip,punchagan/zulip,eeshangarg/zulip,mahim97/zulip,rht/zulip,synicalsyntax/zulip,brainwane/zulip,hackerkid/zulip,rht/zulip,synicalsyntax/zulip,synicalsyntax/zulip,hackerkid/zulip,rishig/zulip,showell/zulip,rht/zulip,andersk/zulip,shubhamdhama/zulip,tommyip/zulip,timabbott/zulip,dhcrzf/zulip,dhcrzf/zulip,shubhamdhama/zulip,showell/zulip,jackrzhang/zulip,jackrzhang/zulip,rishig/zulip,jackrzhang/zulip,brainwane/zulip,rht/zulip,tommyip/zulip,jackrzhang/zulip,punchagan/zulip,rishig/zulip,jackrzhang/zulip,brainwane/zulip,andersk/zulip,punchagan/zulip,eeshangarg/zulip,zulip/zulip,andersk/zulip,tommyip/zulip,timabbott/zulip,rht/zulip,rishig/zulip,timabbott/zulip,rishig/zulip,synicalsyntax/zulip,kou/zulip