First pass at channel.credit.
Credit needs to be per ctag.
Mark basic.credit as synchronous, so that clients can interpret the credit-state as the reply. I *think* this is non-evil.
In fact this should *not* be synchronous.
Change mind again on how this should work - have a synchronous reply method, and an async method for spontaneous notification.
Remove redundant fields from credit-ok.
Add count as a base for credit.  This means messages in flight can be accounted for -- the sender of basic.credit may not have received all the messages the queue has delivered.
Merge in default.
Resurrect.
I'm slightly paranoid that people will use these. Putting them at the end and making their IDs not possible to express with the codec might help.
Simplify: convert basic.credit_state to basic.credit_drained, which implicitly asserts that credit is 0, length 0 and drain is true, and tells you how much credit was discarded rather than the new delivery count (so we can soon remove all delivery count code from the broker).
Now we don't need that any more either.
merge bug23749 into default