delete _remove roles from the run_list

When a `$barclamp-$role_remove` role (and its removal recipe) has successfully finished, delete it from the node's run_list.
So first, let's move this into a separate method.

The method could be tested more easily by passing in hash of ```{ NodeObject instance => role list }```  and ```compacting``` it instead of iterating over the ```pending_node_action``` and filtering out nils (I wouldn't worry about the pre_cached_nodes now).

The saving could be also tested separately by making our method that removes roles return ```{ node_object => , save_it}``` hash, and then have another method like ```save_chagned(nodes)``` which does the actual saving for nodes that changed.

This would leave only testing the removal of the role from the runlist - which is the basically just ```NodeObject#delete_from_runlist``` method, because the rest of the ops would be obvious.

So maybe something like:
```ruby
  def map_names_to_nodes(node_names_to_lists_hash)
     return nodes_without_nils_to_lists_hash

  def remove_dropped_roles(node_objects_to_lists_hash)
     return matching_nodes_without_removed_roles_to_save_it_bools_hash

  def save_updated_nodes(nodes_to_save_it_bools_hash)
      return ?
```

Would that make sense, or do you think this is too complicated? IMHO it might make the testing a lot easier.