introduce epoch and epoch_data (the user-inspectable properties of a session)
adjust engine for introduction of epoch -- Established has a parameter,
initialise state with `InitialEpoch,
put `Epoch epoch_data into state when Server/Client Established is active
adapt to changes of epoch -- carry it around
also, distinguish between renegotiation and initial client hello received
adapt to epoch changes
initialise_crypto_ctx is now epoch_data -> handshake_params -> premaster
move epoch to handshake_state instead of state
adapt to changed location where epoch lives
move reneg to epoch_data (where it is not an option anymore)
adjust code to cope with moved reneg
remove version from handshake_state -- this is encoded in its epoch
(either `InitialEpoch of tls_version | `Epoch epochdata.protocol_version)
introduce another state for renegotiation to simplify code
only update epoch (version of InitialEpoch) on first handshake
use a session_data record for session information - instead of epoch * params
provide an epoch which projects out the session information
adjust to session_data usage
adjust for session_data unification
provide helper for an empty session
adjust interface (handshake_params are gone)
adjust to (handshake_params * epoch_data) -> session_data changes
adjust for (epoch_data * handshake_params) -> session_data change