Security implementation

Implementation of aes-gcm authenticated encryption using keys generated through the use of Diffie-Hellman key exchange. There are no pre-shared keys. At the point of this implementation, all nodes are able to join the cluster. This will be addressed in a separate pull request.