Add Async Event Support

Sorry I'm a bad citizen and also have a bunch of metadata changes in this (I work on planes a lot). If you scroll to the bottom of the diff, it's the new stuff. Seems to work in my testing, though we could probably add some formal tests for it. Async stuff is always a joy to test, but it shouldn't be too bad.

Docs for it are in the readme.

Currently I have support for this working for sync and async tests, but I think we should only document async tests, and leave in sync because it's not much code and people will accidentally do it, and if tests ever change, etc etc.

/cc @stucoxmedia @paulirish