Added getters to Handshake's participants.
Changed the MqTTConnectionPoolFactory constructor so that it takes the port as int and no longer as String (legacy).
Casted byte[] to Object in not-null verification to clarify how the var-args method has to be invoked by the compiler.
Improved javadoc.
Improved javadoc.
Implemented hashCode() so that it generates hash codes depending on the key pair values.
Added a wrapper for byte[] to compare bytes in HashMaps.
Added an interface MessageHandler that can be implemented by different Handlers in order to process incoming Messages (e.g. a HandshakeHandler to handle Handshakes at the server side).
Require now the public key of the server in every phase. This is required to identify the opposite handshaker and since MQTT is not connection but message oriented.
Test for Exception.
Added method to send and encrypt Messages. This is needed by the MessageHandlers.
Fixed imports.
Reformatted.
Updated BouncyCastle to version 1.51.
Formatted javadoc.
Renamed TYPE message field to TYP so that these often used fields are always short.
Removed legacy Heartbeat fields that are no longer needed (because of MQTT).
Updated javadoc.
Updated license (beam-server => beam-common).
Added MessageValidators and an abstract MessageHandler to check the integrity of a Message more easily. The handler verifies messages automatically, therefore the router/interpreter of a Message has nothing to do with the validation what makes things simpler.