Matthias' strawman patch: prioritise notify_sent based on current ingress / egress rates.
Add a BQ function for this.
Prioritise everything we used to before bug 24966.
Don't prioritise 'reject', it could lead to observable reordering.
Track queue index recovery data using dets

We now hold a single dets table with all the queue recovery data.
This is synchronised after we've started up (at which point all
recovery data should be deleted) and just before shutting down,
after the queue indexes have writen their recovery data to it.
Reduce distance to default (again)
Minor refactoring

read_recovery_terms hides unused keys, better name for clean shutdown
checking and comment explaining why recovery_indexes is a gen_server.
Handle recovery index startup errors cleanly
Further refactoring

Inline check_clean_shutdown for improved clarity, move index table
recovery up into rabbit:recover/0, fix/update recovery index specs.
Add upgrade path for recovery indexes
merge default into bug25827
Rename the recovery index file

We've decided on "recovery.dets" instead of "clean.dot" - remove the
CLEAN_FILENAME macro since the terms are only used in one place.
Ensure old clean.dot files are removed during recovery

We also ignore the .dets index file whilst processing the old shutdown
term files, since the names no longer match. If file deletion fails, we
log the filename and posix error.
Refactor: rabbit_recovery_indexes => rabbit_recovery_terms
Rename the module too
Rework/Refactor to handle recovery terms up-front

We process all the recovery terms up-front, during qi recovery, and
clear + sync the dets table immediately afterwards. The recovery terms
and keys, based on the queue directory’s ‘basename’, are then passed
throughout the initialisation process and checked in the various
places they’re used.
Adjust vq tests to the changed API
Tidy of specs and further re-working of tests
push down recovery index handling into qi recovery
Trap exits and ensure we close the table on shutdown