protect contract-tests against spot instance failures
protect contract-tests against spot instance failures

refs DE-139

[skip-docker-build]

Test Plan:
1. Ensure job passes with 0 node removals
2. Ensure job retries upon node removal
3. Ensure job runs finally / clean-up block(s) correctly
4. Ensure job runs finally / clean-up block(s) correctly upon failure

Change-Id: I241d5faa778aa7e28d0d54c2b3650bb05e593da0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/243252
Tested-by: Service Cloud Jenkins <9144042a601061f88f1e1d7a1753ea3e2972119d@instructure.com>
Reviewed-by: James Butters <4c5a489c9bb72d41f20b3b22aaf4c9b864e32f20@instructure.com>
QA-Review: James Butters <4c5a489c9bb72d41f20b3b22aaf4c9b864e32f20@instructure.com>
Product-Review: Aaron Ogata <11ccf682c06d1508642f943a3962a1c3d00b8e44@instructure.com>

instructure/canvas-lms,instructure/canvas-lms,sfu/canvas-lms,sfu/canvas-lms,sfu/canvas-lms,instructure/canvas-lms,instructure/canvas-lms,instructure/canvas-lms,instructure/canvas-lms,instructure/canvas-lms,sfu/canvas-lms,sfu/canvas-lms,sfu/canvas-lms,sfu/canvas-lms