Epoch

introduce a `epoch` type, which serves information about the established session towards a user of the API

this is not completely finished: 
 - [x] `version` has to be removed from `handshake_state` (because we have that information now in epoch)
 - [x] `reneg` should be moved to `epoch_data` (how did it end up in `handshake` in the first place?)
 - [x] client needs to distinguish between awaiting_server_hello while renegotiating and initial handshake

thus, please do not merge yet (also conflicts with #173 (please merge #173 first)) - happy to hear what you think about this epoch business @pqwy