Better use of promises with requests.

- Request handlers are not passed a resolver: instead they may return values or
  promises.  It is an EXPERIMENTAL API but they may also throw errors directly
  to indicate unhandled requests.

- `Oasis.connect` triggers an error callback if the initialization message does
  not include the requested capability.  There is one for each corresponding
  API:

  - a third argument, an error callback, can be passed
  - consumers' error functions are invoked
  - if the single string arg API is used, the returned promise will reject.

Fix #14 #16