Schedules

- controller / user API
- adding executor to the listener so events are not dropped
- added a general-purpose distributed lock DAO
Add         if (stringOps.ttl(redisKey) == null) {
            stringOps.expire(redisKey, BridgeConstants.BRIDGE_UPDATE_ATTEMPT_EXPIRE_IN_SECONDS);
        }