Make benchmarking script more fault-tolerant (#7674)

This is not the prettiest Python I've ever written, but it does allow
restarting benchmark runs rather than losing all progress after a
single failure. This makes the workflow of starting a benchmarking run
and then coming back when it is finished far more workable.

I tried out incremental output of the final json results and reloading
from that, but decided against it because I had to manually construct
json (no native incremental support) and use context handlers to ensure
structures were closed even on a failure exit. Overall it ended up
being pretty gross. Since we were already using temporary files for
captures, this seemed like a reasonable way to go.
diff --git a/.pylintrc b/.pylintrc
new file mode 100644
index 0000000..f7ad5d7
--- /dev/null
+++ b/.pylintrc
@@ -0,0 +1 @@
+indent-string='  '