Separated the connect/disconnect logic into ConnectHandler/DisconnectHandler
Moved the sending of CONN ACK after session creation/update
Moved the will message management inside the session class
- introduced a unique point of access and management of sessions state (SessionRepository)
- separated behaiour for sessions with clean flag to false into DurableSession
- separated behaviour for session with clean flag to true into TransientSession