Member roles for data re-partitioning

First approach at defining member roles which can be used to control the responsibilities that a node has when it becomes a cluster member
Given how many places you do this work, you might want to consider adding a pair of utility methods for it. I'd probably add it to on `MemberRole`, but if you could find a place where they had something else similar feel free to follow any existing pattern. Duplicating the code seems wrong, though