Add support for reading of binary data from socket

Body blobs in REST clients will now return Buffer objects
Support Body payload as Buffer/Stream
Support Buffer & Stream payloads in REST services

The "Body" payload property of REST-based services (like Amazon S3)
will now return Buffer objects instead of Strings, which allows for
the downloading of binary data:

```js
s3.client.getObject({Bucket:'foo',Key:'bar'}, function(err, data) {
  console.log(data.Body); // data.Body is now a Buffer object
});
```

In addition, you can now assign a readable Stream object to the
Body payload:

```js
// Read the body from a stream
var writeParams = {Bucket:'bucket',Key:'image.jpg',Body:stream};
var stream = fs.createReadStream('/path/to/image.jpg');
s3.client.putObject(writeParams, function() {
  // Write the body Buffer object to a file
  var readParams = {Bucket:'bucket',Key:'image.jpg'};
  s3.client.getObject(readParams, function(err, data) {
    var out = fs.createWriteStream('/path/to/image2.jpg');
    out.write(data.Body);
    out.end();
  })
});
```

Conflicts:
  lib/service_interface/query.js

Fixes #3