Implement HA and make cluster implementation pluggable

Make cluster manager pluggable so Vert.x core now no longer has any dependency on Hazelcast. This allows you to write your own cluster manager implementations using a different cluster provider. Also implemented high availability (HA) which includes failover of modules from one node to another and includes quorums.