switch to CPRG instead of CryptoRandomGen
create a test-suite that use tls as a library instead of using directly.

use the secret Network.TLS.Internal module, and as a result,
compile tls modules once now instead of twice each.
use a CPRG when using decrypt RSA.
use a CPRG when signing with RSA.
use the {decrypt,sign}Safer alternative.
use cipher-rc4 instead of cryptocipher implementation.
crypto-random-types -> crypto-random-api.
use new crypto-pubkey
bump core version
bump extra dependency on core
use cipher-aes on windows and macosx as well.
re-indent
add SHA1 and remove unneeded import
only send packet if we are in the client context.
reorganize the recvData function to be nicer.
spring cleanup errors that are not used anymore
typo
define a new Terminated exception
handle early termination and bad remote side more effectively.

mark the session has invalid and also try to
reply to the other side that we're closing the connection.

Finally a new terminated exception is raised to userspace to notify
the failure.
in a nice closing alert, we try to reply as well before closing connections