Quick-and-dirty version of pipelined mandatory publishing
Get dtree use right: we want take_all/2 when we get a mandatory ack (since one queue getting it is enough). take/2 on DOWN is correct.
Substantially improve both performance and correctness: 1) really don't treat presence of MsgSeqNo as a cue we are doing confirms, and 2) get the right dtree function when we receive a MsgSeqNo.
Oops
Don't explode when there is more than one queue to route to!
Fix basic.return stats, and fix various problems found by dialyzer.
Don't think that needs simplifying, but the comment is now not relevant any more.
Don't stomp on timeout when receiving mandatory notification.
Fix drop/2.
Remove some duplication.
refactor: basic_consume/10 -> /9
cherry-picked from bug24297
s/confirmed/confirm/g, fix a test.
cosmetic
brevity
refactor: genericise
refactor: make 'reject' arg order consistent with 'ack' et al
cherry-picked from bug24297
some inlining, cosmetics, and more explicit sequencing
some drive-by inlining
not strictly part of this bug but easier here than on default
Changelogs for 3.2.3
Added tag rabbitmq_v3_2_3 for changeset 915404021814