feat: Leader election based GlobalTimer
This PR resolves(partially) lablup/backend.ai#415.
Using aioraft-ng, this PR removes a dependency onDistributedLock from GlobalTimer and ensures that GlobalTimer ticks only run on the leader process.
When running a cluster with 5 nodes, it tolerates up to 2 failures. Also, a GlobalTimer joins when its process becomes a leader and leaves when it steps down.
https://user-images.githubusercontent.com/14137676/188081676-2f0d7204-a936-455c-b7a7-b258b95e3ec8.mov
Need to find a way to transfer RootContext and PrivateContext objects to the leader process using Redis.
aioraft-ng is superseded by raftify.