Add job polling and webhooks

Closes #9 and closes #11