Add infrastructure for pre/post playbooks

This adds methods for running pre and post playbooks.  They are
not actually run yet.

The jobdir is no longer used as a context manager so that it can
be added as an attribute of the AnsibleJob.  This makes it easier
to access from tests.

The way results are passed around inside the launcher is changed
to be more clear and to potentially allow for expansion in the
future.

The synthetic 'RUN_ERROR' result that test_rerun_on_error relied
upon is removed.  In its place we simply set the requeue attribute
and check for a 'None' result.  That is a simpler method of testing
the same thing (that the launcher failed to get a result from the
main body of the job).

Change-Id: I335807576ffb76600ed8a3ac2355a8b5f8729240
3 files changed