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
});
revert: valid -> revert: invalid

This is to make the drag & drop more intuitive.
Merge pull request #985 from bkutil/nodelist_events

NodeList triggers add/remove node events