Fix issue with non-ASCII characters in Buffer and Stream attachments

This fixes #249.  Buffers are not converted to strings using `buffer.toString('binary')` instead of `buffer.toString()`.  `buffer.toString()` defaults to `utf8` which broken any non-ASCII characters.  

This pull request also includes a fix for an issue in features/attachments.feature that meant the node.js version wasn't detected correctly and meant that streams weren't being tested in the feature file (they were still being tested in the specs).  
I've just pushed a commit that adds some additional tests around this.  The commit also fixes a bug I just found with attaching strings that contain non-ASCII characters.  

Best I can tell from http://nodejs.org/api/buffer.html `Buffer` is only designed to handle arrays of octals (bytes); just search for the word `octet` on that page to see what I mean.  Which would mean it is safe to assume that a `Buffer` only every contains binary.  What sort of binary it contains (e.g. raw binary or a UTF-8 encoded string) depends on what constructor if `Buffer` you use when creating the `Buffer` you pass into `Scenario.attach()`.  

Looking at the `encode64s` function in https://github.com/cucumber/gherkin/blob/master/js/lib/gherkin/formatter/json_formatter.js it assumes that the string you pass as an attachment to the `JSONFormatter` only contains 8-bit characters; basically it can only base64 encode binary.  Which makes sense as you can only base64 encode binary.  

Cucumber only seems to store a MIME type (aka media type) with attachments/embeddings.  It doesn't store the character encoding.  Which means if you attach text, you have no idea from the output JSON what encoding the text is in.  https://github.com/cucumber/cucumber-jvm/pull/501 seems to be related.