Handle aborted builds

Summary: This introduces a polling mechanism which, every 3 seconds, will check with the upstream Changes server to determine if a build has been aborted (cancelled).

Reviewers: rajat

Subscribers: vishal, ar

Differential Revision: https://tails.corp.dropbox.com/D71820
Correct job step response
Switch to struct
Lower timeout to 30s
Bundle reporter logic in Engine
Add memory and cpu restrictions

Reviewers: ar

Reviewed By: ar

Differential Revision: https://tails.corp.dropbox.com/D72371
Simplify engine completion logic
language
Ensure shutdown happens before clientLog is closed
Change PushArtifacts to be synchronous
Remove duplicate shutdown
Add support for Sentry
Add basic error handling for required flags
Ensure panic still crashes
Convert engine tests to httpmock