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
Logically, it'd belong on `Member` I think. You can access the local member through `HazelcastInstance.getCluster().getLocalMember()`.

Do you also need to add `getRoles()` and `addRole` and `removeRole` methods?