Ensure hieradata is copied when source repo is used

Currently, the source repo was copying Puppet content,
but not the hiera data. This was just an ommission that
is now corrected by this patch.
Add support for service publishing and discovery

This patch adds support for publishing and discovering
services.

It adds a call to retrieve service catalog and inject it to hiera,
it also ensures that the script fails when Puppet fails (as
will be the case when a service is pending), and adds a call to
publish each roles service catalog when it completes.