Promise callback and trait additions

- `Promise` callback signature changed to have resolve/reject functions as opposed to the resolver object.
- `trait/promise` adds `.finally()` and `.catch()`