v0.3

Refactoring and reorganization of classes.

Separate interfaces for `run()` and `runAndWait()` which makes it much more simple to maintain, and add adapters to backends that don't support `runAndWait()`.

Better tests & more precise code coverage.