bisect-kit: revise error handling and dump progress

 - Save exception events and progress to session file
 - Add 'log' subcommand to diagnose_cros_autotest.py to dump progress
 - Even one bisector failed, continue if it makes sense
   If prebuilt failed after bisect range is verified,
     => continue with local build bisector
   If failed before bisect range verification,
     => assume culprit is not inside this component and go ahead

BUG=b:117860228
TEST=unittest; run full diagnose_cros_autotest flow manually

Change-Id: Ibacdbb364ed248c12f44c3eb2bba0509ed7b90c6
Reviewed-on: https://chromium-review.googlesource.com/1327863
Commit-Ready: Kuang-che Wu <kcwu@chromium.org>
Tested-by: Kuang-che Wu <kcwu@chromium.org>
Reviewed-by: Chung-yih Wang <cywang@chromium.org>
diff --git a/bisect_kit/errors.py b/bisect_kit/errors.py
index af04a72..f29f4d2 100644
--- a/bisect_kit/errors.py
+++ b/bisect_kit/errors.py
@@ -87,7 +87,7 @@
 
 
 class ExternalError(Exception):
-  """Errors in external dependnecy.
+  """Errors in external dependency.
 
   Like configuration errors, network errors, DUT issues, etc.
   """