Support manual run and retry for tools attached to status updates

Review Request #10311 — Created Nov. 7, 2018 and updated — Latest diff uploaded

Review Board
reviewboard, students

Allows Status Updates to have tools that are manually run, and allows
Status Updates with a error/timeout state to be rerun.

Adds a new StatusUpdate state NEEDS_RUN which represents the ability
to be run manually on user interaction in a review request, and is
considered a pending StatusUpdate for the purposes of collapsing /

Adds a new option to the PUT API for Status Updates that supports
running a tool attached to a Status Update. This runs a new signal:
status_update_run_tool, which extensions can hook into to run some
sort of tool when the user manually hits the run/retry button in the
review request.

Adds a new button to the front-end to PUT to the new StatusUpdate API,
which checks for updates on newly run tools.

Adds a new field to the StatusUpdatesEntry model containing the review
request ID to be passed to a the event handler of these new buttons.

Tests have been added for all added functionality in front-end and

All tests pass, and manual testing with reviewbot tools has been done
and works with the new manual run feature, as well as retrying features.