Make decorators field in exchange and queue transient, i.e. we recalcualte it on recovery in case plugins have changed. Also document a bit more clearly what the lifecycle is of the different fields in these records since that area is becoming confusing.
Inline those since they're special purpose, and add a missed call to queue_decorator:set/1 (which won't matter until we do another policy-invalidating upgrade, but better to catch it now...)
Ensure rabbit_exchange funnels all updates through a single function, like rabbit_amqqueue already does. Ensure that decorators is set to 'undefined' in the durable record so any inadvertent read without setting it will cause an immediate explosion not a subtle bug. And remove report_missing_decorators(), there is no longer any sane context in which it does anything useful.
Merge bug26230
stable to default