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
Move STONITH check to second pass
Wait for corosync to be ready before doing anything

On the initial run, it takes 20-30 seconds before corosync is ready to
accept changes with "crm configure". So wait for that before we continue
(and apply crm-initial.conf, for instance).
For per_node STONITH, have each node configure its own resources only

We have some races when creating STONITH resources because nodes are
creating resources at the same time. It turns out that, in the case of
crowbar, we can have each node configure its own resources only because
we know all nodes will run the code.
Ensure that cluster_nodes always return correct data for this node

Because chef-server has outdated information, it will not return the
node doing the query with the latest attributes, so we replace it.
(Sometimes, it doesn't even list the node as part of the results, while
it should)
For per_node STONITH, be a bit clever for auto-generation of host* param

Some STONITH plugin take hostname as param, while some take hostlist.
And we can't really guess that. So for now, we check if there's a
hostname or hostlist key in the params, and if one of them is there, we
don't do anything. If none is them, we try with hostname.
Change webui to refer to "Fencing agent", not "STONITH plugin"

This is the recommendation from HA people.