Throw real error instead of a string

Fixes an issue where mocha tests don't catch errors properly. To repro with mocha:

```
it('should throw an error', function (done) {
  temp.open(function nothing () {}, function (err, file) {
    expect(err).to.exist;
    done();
  }
});
```

Gives:
`Error: the string "Unknown affix declaration: [object Object]" was thrown, throw an Error :)`
in the test output