add Pacemaker-aware alternative service provider

This is an alternative provider for Chef's "service" platform resource.
It allows us to make an existing service resource Pacemaker-aware by
adding a single line to the service block.
Merge pull request #33 from aspiers/pacemaker-service-provider

add Pacemaker-aware alternative service provider
Split out haproxy recipe in crowbar-pacemaker

No code change, but we have a better split of the code.
Only load crm-initial.conf when the file got changed

There is no point in loading it if it's the same as before, since we
already imported these settings.

We load it immediately because we know that corosync is running already,
and it's a critical file that we do not want to fail loading because of
a later crash in chef-client.
Make stonith-enabled/no-quorum-policy variables in crm-initial.conf

The values will change depending on options in the wrapper, or other
factors.
Add a STONITH recipe

By default, STONITH is marked as disabled. It can be enabled and
configured:

 - manually (by the user)
 - with a stonith plugin that will be used with a clone resource
 - with a stonith plugin that will have per-node parameters
Check that the specified STONITH plugin is available

We simply need to check if the plugin is in the output of "stonith -L".
Compute no-quorum-policy based on number of members in the cluster

This is "ignore" if we have 1 or 2 members, and "stop" (the default) for
more members.

We do this magic in the crowbar-pacemaker cookbook, since we have the
required information there.
Add support for IPMI as STONITH in crowbar-pacemaker

Since Crowbar can know about IPMI configuration of nodes, we can
translate this into a valid STONITH configuration.
Add support for using libvirt STONITH plugin in crowbar-pacemaker

For development purposes, it's very useful to be able to simply use the
external/libvirt STONITH plugin. It turns out that we only need to be
aware of the hypervisor IP address; all the other information we can
find through node attributes.

Useful resource:
http://www.hastexo.com/resources/hints-and-kinks/fencing-libvirtkvm-virtualized-cluster-nodes
Add attributes and barclamp webui for STONITH
Add validation for stonith bits of the proposal
Generate hostlist for clone stonith
Make no-quorum-policy configurable in the webui

People might want to pick something else than stop when they have enough
nodes.
webui: Implement per-node table for STONITH
webui: Disable no-quorum-policy option when there are not enough nodes

If the cluster has less than two nodes, then the no-quorum-policy must
be forced to "ignore" and we also disable the select widget for it.

Since we know that there will always be a node with the founder role,
the condition is really on the number of non-founder nodes.
Remove input-sm from class of the td containing the parameter

This made the text smaller than it should be.
Adapt attributes created by crowbar for per-node STONITH

For per-node STONITH, we have a hash where the keys are the FQDNs of
each cluster member. It turns out that when configuring the resources in
pacemaker, what we are using is actually the hostnames of each cluster
member (ie, FQDN without the domain name).

So we translate what crowbar gives us to what pacemaker expects.
Sort the nodes in the stonith table
Display node aliases instead of names