Merge juberti:master to doohickey branch

Same as #3, just on the branch.
For the purposes of symmetry, I think that we have to make this async too.  That suggests a Promise-based API, but only for symmetry reasons.