First pass at ha-sync-mode.
Auto sync when policy changes to require it, in case we are already mirrored but have unsynced slaves at that point.
It's 'name', not 'key'.
Take note of RABBITMQ_SERVICENAME, same as rabbitmq-service.bat does.
Remove rabbit_runtime_parameter:validate_clear/3, and instead just validate that the parameter exists.
Ensure that we resume socket reading in all edge cases
Specifically in all the cases where handle_other might have changed
the connection_state.

This is most straightforward and obvious to guarantee by always
invoking recvloop after handle_other, unless we are stopping.

This does expose an inconsistency in the various non-throw/exit
termination cases: two of them were returning State, the other
ok. Let's go with the latter; it's easiest.

We also take the opportunity to eliminate 'Deb' from the handle_other
signature. This is only needed in the {system, ...} message case,
which we now handle specially.
Merged bug25453 into stable
Merged bug25456 into stable
Merge bug25457
stable to default
merge bug25418 into default
Remove spurious blank line in the logs.
cosmetic
introduce is_empty(State) helper in rabbit_amqqueue_process
ported from bug 23749
oops
simplify queue's basic_consume handler
backported from bug23749 branch
- the call to update_ch_record in the is_ch_blocked(C1) == false
  branch was superfluos since the preceding update_consumer_count
  calls update_ch_record
- all the checking whether the channel is blocked, and associated
  branching was just an optimisation. And not a particularly important
  one, since a) the "a new consumer comes along while its
  channel is blocked" case is hardly on the critical path, and b)
  exactly the same check is performed as part of run_message_queue (in
  deliver_msg_to_consumer/3). So get rid of it.
continue accepting when client sends RST before we accepted
ignore early enotconn, and report early socket errors more nicely
Keep name around for logging / info item.
Merge bug25465