Collect InstallableManager errors instead of stopping on the first error.

This CL refactors the error handling code in InstallableManager to add a
debug mode where all errors are collected and returned to callers. When
debug mode is specified, the InstallableManager will not short-circuit
fail if it can avoid it (i.e. if the manifest exists and is non-empty).
Instead, it will attempt to run all tasks, accumulate errors, and return
a list of all errors in the InstallableData struct.

Callsites are updated to accept the new std::vector member in
InstallableData. Tests are added to check the accumulation behaviour.

BUG=915945

Change-Id: Ic7c50313cab16c7558cba105ddbe5d5556000b92
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1506069
Commit-Queue: Dominick Ng <dominickn@chromium.org>
Reviewed-by: Alan Cutter <alancutter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#642942}
20 files changed