Add initial support for x-prefetch consumer arg (basically auto-credit). It's faster than basic.qos but not as fast as I would like. Also reject / nack is gratuitously broken.
Merge in default.
Fix various bugs that prevented this form working at all. Also change the "OtherArgs" we pass through to Args (since it's there to be reported, it makes no sense to hide args we have parsed out).
More consistent naming
Upon unblocking, unblock, and run message queue.
Merge in default.
Ignore prefetch in autoack mode.
Unbreak basic.reject, basic.nack and basic.recover. Fix up specs.
Undo accidental unification
Simplify / make it clearer that we always go through the invariant.
Rearrange order of function args in ack/reject/requeue for consistency.
Treat prefetch=0 the same as basic.qos does - it means infinity not a broken consumer
Undo gratuitous rename.
Move credit args parsing into rabbit_queue_consumers, to reduce some nasty arities and increase locality.
Unify rabbit_limiter:credit/5 and rabbit_limiter:set_consumer_prefetch/4.
We can't have drain=true and mode=auto so let's unify to a single mode: manual/drain/auto.
Update essay.
Capability
Optimise queue index initialisation

Avoid loading the journal when the file doesn’t exist.
Also try to avoid flushing the journal unless necessary.
merge default into bug24297
(and resolve merge conflicts in limiter)