Initial code review

@evanstade Please review.  Hopefully the pull request flow will let you add comments.
for `.run()` I'd say switch `opt_*` => `{*: 'value'}` and then add a transaction{Amount,Currency} as you previously proposed on whatwg@ list.  for standard flow, I'll look into this.