Introduce support for mocking command output

This change rewrites FakePopen to permit registering commands and
synthetic output such that client code can call subprocess.Popen() and
receive required output without actually executing commands.

With this change, it is possible to mock most of the output
require during a packstack run.

Change-Id: If81f71cfe89a61e25fb62c97ed5b3759039a0bfb
add support for neutron/nova notifications

This adds options to configure the Neutron -> Nova notifications of port
status and data changes.  Requires a recent puppet-neutron module with
neutron::server::notifications manifest (e.g.,
https://review.openstack.org/#/c/88410/)

Change-Id: I26684a8fe5df79db6b68a5bd733619517376660c
Closes-bug: 1306337
support ssh-based live migration

This change introduces support for ssh key generation and distribution
to support instance migration via qemu+ssh connections to remote
hypervisors.

This change requires https://review.openstack.org/#/c/89620/ (which
introduces support for ssh keys into puppet-nova)

Change-Id: I38c2aee3a7415bb69a099419f6149151c7d6b52c
Closes-bug: 1311168