reword, reorg
add identity methods for `as` and `given` to prototype

- makes return type consistent for all states (otherwise returns `this`
when pending and `undefined` when resolved).
add `test` executable
add `Deferral` test