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
Try to avoid changing imports / formatting. We want to make this as easy as possible to be merged upstream