Fix Net::HTTP Handler Behavior

There are two notable behavior changes:
1. We do not yield to a block when there is zero content. This was
causing an exception upstream in the code (in the case of client-side
encryption, a cipher#update exception for no content).
2. We moved the truncated body check to be outside the Net::HTTP block,
so that we don't clobber exceptions that were raised before that check.

These issues have existed in the code for some time, but negative
effects were only recently realized when a change in OpenSSL behavior
resulted in empty packets being sent over the wire - yielding these
caused exceptions downstream, rather than waiting for the content to be
sent. That issue should no longer occur.

Resolves issue #557.