more efficient data splitting in reader
restore short message performance
it turns out that short message performance had actually gotten worse,
but this was masked by the scheduler.
refactor: better var names
correct typo in comment
This was introduced in http://hg.rabbitmq.com/rabbitmq-server/rev/4852382b462b
small refactor: simplify AMQP version negotiation a little bit
simplify
merge stable into default
merge stable into bug25939
further optimise frame reading

Handle complete frames in one go, if possible, rather than header and
payload separately. This essentially halves the amount of binary
splitting in the framing code.

Note that we only do this when the buffer contains just one
binary. Tests have shown that attempting to introduce this
optimisation when the buffer comprises multiple binaries hurts
performance for large messages. That's presumably because we end up
constructing larger intermediate binaries.
some small codec optimisations
- encode and decode field types as characters rather than strings
- construct shallower iolists by cons'ing instead of appending
- avoid construction of intermediate binary for tables and arrays
eliminate unnecessary state modification
amazingly this actually yields a few % performance improvement
become 1.0 with the correct state
merge bug25939 into bug25943
lift buffer vars from state

This improves performance by reducing state update and also makes it
clear that these vars are only updated in the two loop functions.
cosmetic
Revert the changes to the error thrown.
Merge bug25928 again
stable to default
Simplify binlist_split from /4 to /3.
Merge bug 25942