add periodic state check for leader state

Under certain rare conditions the Leader can be in a corrupted state
which takes some time to resolve. A periodic state check has been
added for the following:

* if the elected leader is unknown, a scout is started
* if the elected leader is remote, but there is no leader watcher, a
leader watcher is started
You should instantiate this FiniteDuration up in the companion object, and pass it into the constructor.