make 'deferred' objects into a class

a 20% performance increase (because the VM can make more assumptions about object shape)
```
 ~/code/promise-bench ⮀ node bench.js
old x 129,027 ops/sec ±4.44% (59 runs sampled)
nathan's fix x 156,382 ops/sec ±4.15% (62 runs sampled)
Fastest is nathan's fix
```