Finish configuring a service before adding it to HAProxy

Starting an HAProxy instance for ceilometer-api (and possibly other
similar services) will fail on Ubuntu if the package for that service is
installed but not yet configured: the service is still running in its
default configuration binding to 0.0.0.0 instead of just the management
IP, preventing HAProxy from binding to the management VIP on the same
port.

To prevent a dependency loop (Ceilometer, like most other OpenStack
services, depends on MySQL), Galera dependencies have to be narrowed
down from the whole of HAProxy setup to just the registration of MySQL
service with it. HAProxy related parts of controller_ha and galera
classes are refactored to support reloading HAProxy for each service
independently, and to group together HAProxy options specific to
individual services.

To support granular addition of services into HAProxy, haproxy module
updated to puppetlabs-haproxy 1.0.1 (0d4c50e) and refactored to split
haproxy.cfg into multiple files under /etc/haproxy/conf.d using include
directive as implemented in the patch by Brane F. Gračnar:

http://marc.info/?l=haproxy&m=129235503410444

The define_backends option for haproxy class introduced in Fuel is
renamed to define_backups and ported to the new haproxy module.

Support for selecting exported haproxy::balancermember resources by tag
is dropped since it is no longer used (and not relevant since Fuel no
longer runs puppetmaster).

An ordered list of controllers is passed from osnailyfacter::cluster_ha
to openstack::controller_ha so that haproxy::balancermember always sets
the primary controller as the active server in failover configurations.

HAProxy is now configured as part the "main" stage, so "cluster_head"
stage is no longer necessary. MySQL and RabbitMQ listen blocks are
populated before HAProxy is first started, other listen blocks are added
incrementally with HAProxy being reloaded via OCF. In HA mode, all
dbsync invokations now require HAProxy MySQL (Ceilometer and Heat were
missing), and all OpenStack services now require HAProxy Keystone.

HAProxy configuration for RadosGW is changed from active-passive
failover to active-active load balancing between controller nodes.
Backend IP addresses for RadosGW servers are changed from storage to
internal.

HAProxy mode option handling is cleaned up so that the default "http"
mode now propagates properly for listening services that do not specify
"tcp" mode explicitly.

Syslog facility for Ceilometer changed from SYSLOG to LOG_SYSLOG to
catch up to the cleanup done in LP #1263675.

Added "--no-class_inherits_from_params_class-check" to puppet-lint
options to prevent it from issuing a warning that is not relevant for
Puppet versions 2.7 and newer.

Change-Id: I5fa03dbc3f7e3a7dfa57c226a5396f652c111997
Closes-bug: #1264388
Closes-bug: #1278603
Merge "Finish configuring a service before adding it to HAProxy"