v0.3.0: Candidate and Session improvements
Session:
- Adding "watchers" concept to session package so it is more useful as
a standalone package - Using RWMutex on session.Session over basic Mutex
- Breaking up Session::maintain() loop into separate funcs
Candidate:
- Using RWMutex on candidate.Candidate over basic Mutex
- Sessions are now only created once the Candidate has been told to
enter election pool - Candidate::Run() now returns an error if the session was unable to be
created - No longer using a channel to handle session updates
- Breaking up Candidate::lockRunner() into separate funcs
- A session update no longer directly sends a watcher update, instead
executing a Candidate::refreshLock() call.