correctly handle errors

I was able to convert an `Error` to a plain object based on what you figured out here:

```coffee
coffee> u = require 'underscore'
coffee> err = u.extend new Error('help'), other_field: true
{ [Error: help] other_field: true }
coffee> u.pick err, Object.getOwnPropertyNames err
{ stack: 'Error: help\n  at repl:1:20\n  at REPLServer.replDefaults.eval (/Users/jonahkagan/nvm/v0.10.21/lib/node_modules/coffee-script/lib/coffee-script/repl.js:33:42)\n  at repl.js:239:12\n  at Interface.<anonymous> (/Users/jonahkagan/nvm/v0.10.21/lib/node_modules/coffee-script/lib/coffee-script/repl.js:64:9)\n  at Interface.EventEmitter.emit (events.js:117:20)\n  at Interface._onLine (readline.js:202:10)\n  at Interface._line (readline.js:531:8)\n  at Interface._ttyWrite (readline.js:760:14)\n  at ReadStream.onkeypress (readline.js:99:10)\n  at ReadStream.EventEmitter.emit (events.js:117:20)\n  at emitKey (readline.js:1095:12)\n  at ReadStream.onData (readline.js:840:14)\n  at ReadStream.EventEmitter.emit (events.js:95:17)\n  at ReadStream.<anonymous> (_stream_readable.js:746:14)\n  at ReadStream.EventEmitter.emit (events.js:92:17)\n  at emitReadable_ (_stream_readable.js:408:10)\n  at emitReadable (_stream_readable.js:404:5)\n  at readableAddChunk (_stream_readable.js:165:9)\n  at ReadStream.Readable.push (_stream_readable.js:127:10)\n  at TTY.onread (net.js:526:21)\n',
  arguments: undefined,
  type: undefined,
  message: 'help',
  other_field: true }
```

so this can become:

```coffee
when val instanceof Error
  key_helper _.pick(val, Object.getOwnerPropertyNames val), fn, key
```