First apprach at defining member roles which can be used to control the responsibilities that a node has when it becomes a cluster member
Addressing PR comments. Corrected where it said rol -> role. Added javadoc to MemberRole enum. Removed unnecessary whitespace
Addressing PR commments. Now using EnumSet for the MemberRole collections. Added MemberRole.id for serialization/deserialization. Added javadocs. Extracted MemberRole to its own file.
Fixed import replaced with wildcard. Changed how all nodes get notified of a member role update
Moved the logic to read and write a collection of MemberRoles to the MemberRole enum
Renamed MemberRole to Capability. Changed the update strategy. The update is now done through the Member interface. A Member requests the Master to update its Capabilities. The Master in turn validates the request (i.e.: it does not allow the cluster to be left without any Members with the PARTITION_HOST capability) and if approved it tells all the 'slaves' that the Member capabilities have changed.
Added logging around member capability update so that we can know the result of the update request
Merge branch 'atlassian-3.x-integration' into control-repartitioning-on-join

Conflicts:
	hazelcast/src/main/java/com/hazelcast/partition/impl/InternalPartitionServiceImpl.java
A little bit of clean up around how the InternalPartitionServiceImpl gets a list of PARTITION_HOST node
Merge pull request #5 from atlassian/control-repartitioning-on-join

Member Capabilities for data re-partitioning