adds channel interceptor
improves interceptor priority handling
passes intercept_method() to intercept function
adds missing interceptor calls
merge default into bug25817
moves the expand_* functinos to happen before handle_method
refactors channel interceptor
merge default into bug25817
handle interceptor exceptions at the channel level.
refactors intercept_method error handling
fixes handle_expand_shortcuts
basic.publish performance degrades if called with intercept_method

./runjava.sh com.rabbitmq.examples.PerfTest -y0 yields around 75k msgs/sec

without this change it yields 62k msgs/sec max

and that’s without any interceptor registered
merge default into bug25817
passes the right argument type to rabbit_channel_interceptor:select/1
Simplfy (although perhaps not as much as we had hoped) by only informing queue decorators when the active consumers may have changed, rather than trying to give them more information about what is happening.
Simplify further, don't use a proplist
Maybe this is clearer?
Even clearer?
consumers/1 returns a list of 4-tuples now.
renames handle_expand_shortcuts to expand_shortcuts