Ported repository installation from puppet-openstack

Ported repository installation from puppet-openstack. Added
error handling for invalid repositories. Using stahnma/epel
to manage EPEL installation EPEL 7. Set repository default
to 'icehouse'.

Change-Id: I6fdbaf1ee59186aba4d2d5945c9297fb5ef94cbb
Revert "Ported repository installation from puppet-openstack"

This reverts commit b0b83dbf4507db36220f9c04c68e4788109b1c4b.

Repo management should be covered by the following spec:
extras-repository-refactor

Instead of the old puppet-openstack style

Change-Id: I2205004321fb9aa37b3b745cfe9fbe068fa43c9c
Switch to metadata.json for Puppet forge releases

Since puppet 3.x, Puppet Labs Forge accept only the metadata.json
for module description (Modulefile is now deprecated).

This patch :
 - convert the Modulefile to metadata.json.
 - bump major version to 5 (for juno).
 - switch to stackforge namespace.
 - relax pe version_requirement to 3.x.

Change-Id: I9c83b577887210486fa03ed358910e129069a57c
Add hash based repository management

This patch adds support for managing repos
for major distros, separated by osfamily at
the top level and operatingsystem below that.

Since redhat, fedora and centos can all install
from rdo, which is the only current option, the
fedora and centos classes simply wrap around the
redhat one. This may change in the future if any
of them change (for example if RHOS support is
added and redhat is now different to fedora)

Change-Id: I5b18f393999d6f70757a2dfd9b12da049d6b64e1