wrap all spawn attrs into a single RunData object

This is so you don't need to track state of each attr individually.
Run cmds asynchronously: start, wait, stop, kill

This adds an API for running cmds and explicitly waiting for them
to exit.

This updates the original `run` implementation to just be a macro
to `start` then `wait`.

Closes #9.
Merge pull request #12 from redding/kr-startstop

Run cmds asynchronously: start, wait, stop, kill