Fix support for publishing messages that have a zero-length body

The new path for short messages introduced in 27834eedc broke publishing for
messages with a content length of zero.  This commit corrects that by only
appending a body frame if we have content (which is the same as the behavior
in the longer path).
Tests for sending content of various sizes

There are different paths in sendMessage depending on how large the
content (and method/properties frames) are -- roughly, if they fit in
a single chunk of a certain size, they are sent together, otherwise as
separate chunks.
Rewrite frame-coalescing for three cases

In order of presumed likelihood:

 1. there's a short message and all of the method, properties, and
 content fit in a single chunk
 2. there's a longer message, but the method and headers fit in a
 single chunk
 3. all of the method, headers, and content must be sent in separate
 chunks

There's no attempt to account for the other case, that is the
properties and content fit in a single chunk but the method must be
sent on its own (first). I'm not sure that could ever be the case,
since there's limits to the field sizes of BasicPublish, though of
course that depends on the arbitrary threshold for what is a "single
chunk".

While testing this I noticed that a large value in the headers table
can make it bigger than the encoding `SCRATCH` area; this results in
an OOB exception in Node.JS 0.8, and silently succeeds (!) in Node.JS
> 0.8. I've increased the size of the scratch are to at least be
double the single chunk threshold (so it's in a sense consistent, if
still fixed and arbitrary). Not sure what to do about that in the
longer term.