Make asynchronous interface more explicit

It became more useful to have the interface be asynchronous instead of
just firing off an async process w/ no callback options.

This also adds more inline docs, jshint and pulser (formerly it's own
module).