Trigger cfn-init via script rather than lib

The current cfn-init software-config hook doesn't work at all
since cfn_helper is installed in a venv, not in site-packages.

This change switches to writing out metadata to
/var/cache/heat-cfntools/last_metadata and invoking cfn-init.

/var/lib/heat-cfntools/cfn-init-data cannot be used since that is
already populated with all boot metadata, which may still be used
by os-collect-config bootstrapping.

Change-Id: I7252a6f12223613b55b4b6417383673faa0d52b3
Closes-Bug: #1321513
Unit test of puppet hook

This test asserts the following when the puppet hook is invoked
with test data:
- Expected FACTER_* env variables are set
- Puppet is invoked with the expected arguments
- Written output files result in output values being set
- Puppet responding with a failure returncode propagates to the
  response

Change-Id: I987c9575bd51f53054c5f8e6c332aaa60a4a8f0c
Unit test of script hook

This test asserts the following when the script hook is invoked
with test data:
- Expected env variables are set
- Script contents matches the fake config tool contents
- Script is invoked with no arguments
- Written output files result in output values being set
- Script responding with a failure returncode propagates to the
  response

Change-Id: I1c32ec89b1ce16c25e3a29ab36e016cca5ff7835
Update image building steps in software-config README

dib-run-parts script used by diskimage-builder was moved to a
separate repository which has to be fetched and added to PATH.

Change-Id: Ie7e16ceda0efb4dca002607c0e6cad958a328bee
Merge "Update image building steps in software-config README"
Merge "Trigger cfn-init via script rather than lib"
Merge "Unit test of puppet hook"
Merge "Unit test of script hook"