Added implementation of equals and hashcode functions. This is used to
compare between two PartyData objects.
1. Fixed the name of CreateServerSocket function to createServerSocket.
2. Fixed comments.
1. Changed the name of CreateServerSocket function to
createServerSocket.
2. Changed the visibility of the class to package private instead of
public.
3. Fixed comments.
Fixed and added comments.
Added constructors that get the names of key store and trust store files
instead of using the default files, in order to let the user manage the
keystore and truststore as he wish.
This class manages a common functionalities for both multiparty and two party communications.

The class is called from the communication setup classes and does the creation of the channels and the connect step during the communication setup.

Although it is declared "public" it is not for public usage and we recommend not to use it directly. In order to setup a communication use one of the communication setup classes.
This class has many changes since the common functionality of the two
party communication and the multiparty communication moved to the new
TwoPartySocketConnector class.

The changes are:
1. EstablishConnection object has been deleted. Instead, there is an
instance of TwoPartySocketConnector that manage the creation of the
channels and the connecting step. It basicly holds the
establishedConnections. 
2. The visibility of me and other class members has been changed to
protected instead of package private.
3. A TwoPartySocketConnector object is created in the constructor.
4. The prepareForCommunication function has been changed after adding
the connector:
-It does not create an establishedConnections object.
-The establishAndSecureConnections function has been renamed to
establishConnections since there is no securing step. 
-The connect and verifyConnectingStatus function have been moved to the
connector object.
-Calling  watchdog.stop() is done in the prepareForCommunication
function instead of in the verifyConnectingStatus.
-Calling enableNagle is done only if needed.
-In the end of the prepareForCommunication function there is a call
forconector.reset() in order to delete the map with the created channels
and make the connector clean for the next call to
prepareForCommunication.
5. establishConnection function steps:
-Creates the channels using the connector.createChannels() function.
-Creates the listening thread.
-Connect the channels using the connector.connect() function.
6. When timeout occurred, call connector.stopConnecting() instead of
clearing the establishedConnections.
1. After adding the new multiparty communication (in a different
package), the visibility of the class and some of the methods has been
changed to public. Despite that, we recommend not to use it directly.
The class is created and used inside the communication setup.
The method whom visibility has been changed are: setState,
setReceiveSocket. 
2. The visibility of the state class member has been changes from
protected to private.
3. The visibility of the msgBytes class member has been changes from
package private to private.
4. Added me and checkIdentity class members. This members are used in
case there is a need to send the identity of the current party during
the connect step.
5. The parameters me and checkIdentity have been added to the
constructors.
6. connect function: in case there is a need to verify the identity
during the connect step, send the port number of this party. (the port
is unique and therefore can be used to validate the party's identity).
1. Added a constructor that gets from the user the names of the keystore
and truststore files.
2. In the constructor, added creation of a TwoPartySocketConnector that
creates SSL sockets.
3. The constructor is now throw IOException in case there is a problem
with the key store and trust store files. In case of  a problem
regarding the SSL protocol, throw an SSLException.
The constructor is now throw IOException in case there is a problem
with the key store and trust store files. In case of  a problem
regarding the SSL protocol, throw an SSLException.
1. The constructor that gets only the factory parameter has been
deleted.
2. The parameters me and checkIdentity have been added to the
constructors.
3. connect function: in case there is a need to verify the identity
during the connect step, send the port number of this party. (the port
is unique and therefore can be used to validate the party's identity).
Added the MultipartyCommunicationSeturp interface.
This interface manages the common functionality of all multiparty communications.

The main function is prepareForCommunication that get a map that hold for each other party, the number of requested channels and returns the created channels.
Fixed casting problem when timeout has been occurred.
Added multiparty communication setup implementations.
These implementation uses the ActiveMQ and the JNS mechanism.
It creates a TwoPartyCommunicationSetup between the current party and every other party in the protocol.
Added multiparty communication setup implementations that uses the SSL protocol.
These implementation uses the ActiveMQ and the JNS mechanism.
It creates a TwoPartyCommunicationSetup between the current party and every other party in the protocol.
Added multiparty communication setup implementations.
This implementation uses plain tcp sockets to communicate between all parties.
This implementation uses the TwoPartySocketConnector to create and connect the channels, but the listening is done by the SocketMultipartyListenerThread that listens for connections from all the other parties. After receiving a connection, the listener receives the port of the connected party and determines which party is connecting. Then, sets the created socket to the party's channel.
Merge pull request #48 from cryptobiu/communicationRevision

Multiparty communication