NodeList triggers add/remove node events

Whenever a node is allocated to a role, or removed from it, the NodeList
triggers an appropriate event, passing along the role name, node id and
the node alias. This way, other UI components can listen and react to
these events.

Example usage would be:

$('#element').on('nodeListNodeUnallocated', function(evt, data) {
  // do stuff here
});
(cherry picked from commit efb164d25620968b15b9f766e5beb1701ab30bac)
revert: valid -> revert: invalid

This is to make the drag & drop more intuitive.
(cherry picked from commit 102bd9c975e43f58b349cc3b64f78eeb7cc58457)
Merge pull request #987 from bkutil/nodelist_events

Nodelist events