Adding file uploads

This PR adds file uploads to the the node bindings. Here's a sample script using the `create` and `retrieve` methods on a file upload:

```node
var stripe = require('stripe')('SECRET_API_KEY');
var fs = require('fs');

var testFilename = "/home/wangjohn/stripe/stripe-node/test/resources/data/minimal.pdf";
var f = fs.readFileSync(testFilename);

stripe.fileUploads.create({
  purpose: 'dispute_evidence',
  file: {
    data: f,
    name: 'minimal.pdf',
    type: 'application/octet-stream'
  }
}, function(err, fileUpload) {
  if (err) {
    return console.log('ERROR:', err);
  }
  console.log(fileUpload);

  stripe.fileUploads.retrieve(fileUpload.id, function(err, fu) {
    if (err) {
      return console.log('ERROR:', err);
    }
    console.log(fu);
  });
});
```

The PR also adds a couple of things to the underlying `StripeResource` and `StripeMethod` which allow us to override the default headers, provide our own http data, and override the default host of `api.stripe.com`.

r? @michelle 
cc @jayeb, @amfeng 
Just `if (spec.headers) { ... }` is sufficient. If you actually want to check that it's not undefined, it's better to do `if (typeof spec.headers !== 'undefined') { ... }`