Permit Buffer and binary string as options.data.

Prior to this change Buffer was subjected to stringify as it matched the
'object' typeof test.  binary string also ended up corrupt.  This change
ensures we're done with encoding by the time we write to the request
and adds some tests that previously failed.