Add support for the OpenStack Icehouse Release (2014.1)

This commit adds support for the OpenStack Icehouse release.

Add the auth_encryption_key parameter to the heat::engine call

More recent versions of the puppet-heat module, starting in Dec '13,
require a auth_encryption_key parameter to be passed to the engine
class. Kickstack didn't pass on the parameter, which caused the
installation of Heat to fail. This commit adds the parameter, sets
it automatically and exports it as fact.

Applying this fix makes deploying Heat via Kickstack possible again.

Add database configuration to neutron.conf

Previous versions of Kickstack would have the database configuration in
the plugin. By now, apparently, the recommended mechanism is to have the
DB configuration happen in neutron.conf -- at least the ML2 class of the
Neutron module doesn't even implement database parameters anymore. Thus,
we need the database configuration in neutron.conf. This commit adds the
required parameters to the neutron class.

Bump dependency on puppetlabs-openstack to 4.0.0

Add three new template files required for Icehouse

Icehouse doesn't ship the L2 OVS agent configuration file by default
anymore, so we need to supply it. Also, the Upstart jobs for Neutron
on Ubuntu 12.04 are broken for setups using OVS instead ov ML2. Fix
them by supplying appropriate replacements.

Ensure the L2 configuration file and Upstart job works properly

The Icehouse packages for Ubuntu assume that Neutron is using the ML2
plugin by default; older setups using OVS continue to be supported for
this release though. However, when installing the L2 agent package for
OVS, the Upstart file is broken for OVS (i.e. non-ml2) usage and the
OVS configuration file is missing altogether. These commits add back
a proper OVS configuration file and ensure that on Ubuntu systems, the
Upstart job makes the agent watch out for the correct configuration
file (the OVS one instead of the ML2 one).

Ensure Neutron is properly configured for Nova notifications

Starting with the Icehouse release, Neutron can talk to Nova directly
using so-called notifications. For this to work, Neutron needs to
know how to talk to Nova. This commit enables the required portion
of functionality by calling neutron::server:notifications in the
Neutron puppet module. Also, the Nova API address is exported as a
separate fact in the Nova module. Also, the Nova API IP is exported
as a separate fact.

Also, this ensures that on Debian and Ubuntu systems, the default file
for the Neutron server points to the appropriate OVS configuration if
OVS is used as a driver instead of ML2.

Change call of the repo function to match new name

puppet-openstack 4.0.0 and newer use openstack::resources::repo to add
the OpenStack software repositories locally; this commit makes Kickstack
use the new name.

Move the neutron nova notification stuff into a separate class

Properly define auth URI for Cinder

Newer versions of the puppet-cinder module automatically guess what the
Auth URI is if it's not set separately; by setting it explicitly, we
make sure it has the right value all the time.

Ensure directories are there before installing files

The current OVS agent packages don't even ship the directory required
for the OVS agent configuration file anymore; create it before putting
the file in place.

Don't explicitly enable Securitygroups anymore

Previous versions of kickstack had to enable Securitygroups because the
Neutron module was broken; the module was fixed now, so this is just not
necessary anymore.

This deletes the neutron nova notifications call from server.pp

Not required here anymore as this has moved into a separate class.

Include the nova notifications class in api role

Change-Id: Ifc10b7b981153e0261da76cd290bce7337c1e6be