Async artifact download

Make artifact download asynchronous.  This necessitates splitting the api operation create into create + start.  The harpoonctl agent create command now only performs create and then waits for that operation to complete.  There is now a harpoonctl agent run command that performs create followed by run if the create is successful.
In every single case the we've had to date (which is about eight examples in our code so far, and will increase with more integration tests) the correct method of usage is:

Start watching for final results from action
Perform action
Check immediate results of action
Wait for final results from watch

That suggests that the asynchronous method method is the correct one.

Having the asynchronous result checking method also makes the API's correct usage almost as easy as the incorrect one.

Supplying the synchronous Wait() method (as existed before) makes the usage [perform action, check immediate results, start waiting for final results] by far the easiest path to implement. Unfortunately that usage works most of the time too, until that time that you hit the race condition.