Rework setting the replica set attributes on nodes when applying

There were several issues in the old code:
 - using sets of different types (NodeObject and string)
 - unneeded save when there's no change
 - additional save for controller
ceilometer-server role needs at least 3 nodes in a cluster