optimized & hardened the code a bit against missing or erroneous parameters & made cloning (new Class(anotherInstance)) more efficient by copying property values directly
adata is no longer changed globally (by changing cryptoParam.adata), instead Chat will own a Crypto instance that it shares with the managed User and Messager instances.
(There was a nasty hidden bug with User.nickCipher being cached and adata changing afterwards – never have mutable globals! It's not worth it!)