Simple refactoring and minor code adjustments to make resumption
from backend actually work:
- call engine.compile and check for missing dependencies
on every run;
- misc.Failure equality semantics adjusted;
- load failures from backend on every run.
Change-Id: I8a0462f2dec0ec66a19ee6a5ef10e4be48110e19