Worker executor adjustments

- Reset the notify_timeout on start (to ensure that the
  notification thread will continue working on repeated
  stops/starts)
- Adjust comment of stop/start method to reflect that more
  than just the proxy thread is started and stopped.

Fixes bug 1300373

Change-Id: I534fa87d9f3b9cfd7aa553f157cb7e776a08f54f
Handle retry last_results/last_failure better

Provide properties on the atom/retry detail object to
allow access to last results instead of performing
the same type specific operation via storage allow
the object itself to provide the last result or last
failure instead.

Handle the resultant fetching failures correctly in
storage.py (instead of reraising index errors).

Change-Id: If33ff64d6173aba59d574d5997d07d91a36ec17e
Decrease extraneous logging

This log statement isn't very useful, and is a very active logging
statement used when no backend is provided, to avoid spewing to much
useless information into logs just remove it.

Fixes bug 1295880

Change-Id: I981185909f28bb20f96d56cb01cf5e1122f8d0a9
Add a engine preparation stage

Move the final logic of the compilation stage (and pre-run) code
into a new engine stage that is devoted to performing post-compile
but pre-run actions. Do the final validation that was being done
in compile() and run() in this stage instead of being split across
those two stages.

Breaking change: any user expecting storage to be ensured after
compilation will have to adjust their code to call prepare (after
which they can continue to expect storage to be ready).

Change-Id: Ie97bc4a795266dda9d7ae8b395bcaadcd1ada737
Merge "Add a engine preparation stage"
Merge "Worker executor adjustments"
Merge "Handle retry last_results/last_failure better"
Merge "Decrease extraneous logging"