Add conflicts_with constraint

conflicts_with constraint covers the scenario when a node can be
assigned to a certain role only if it is not assigned to any of the
listed roles.

E.g.: A node can be either a pacemaker-cluster-member OR
a pacemaker-cluster-founder, but not both. This would be archieved by
adding these constraints to the model:

{
  "pacemaker-cluster-founder" => {
    "conflicts_with" => ["pacemaker-cluster-member"],
  },
  "pacemaker-cluster-member" => {
    "conflicts_with" => ["pacemaker-cluster-founder"],
  }
}

The conflicts_with value can contain more than one role in the case of
multiple conflicting roles:

{
  "roleA" => { "conflicts_with" => ["roleB", "roleC"] }
}

(cherry picked from commit 45c7ba260257e2d81ce4e6cd75964c2198deae2a)

Conflicts:
	crowbar_framework/app/assets/javascripts/jquery/nodeList.js
	crowbar_framework/app/assets/javascripts/misc/stringLocalize.js
Add conflicts_with constraint type to ServiceObject

conflicts_with constraint allows specifying one or more mutually
exclusive roles for a given node and role.

E.g.: a node can be either a pacemaker-cluster-member or
pacemaker-cluster-founder, but not both.

The patch also adds tests for existing constraint types.

(cherry picked from commit a6f6afee697d799ef06dfb32c0580ae68e628881)