Future liveness fixed

Changed future spec to use an immediate executor in observers context
Added spec to show deadlock condition when an observer tries to access the future: this has been fixed using an open-call policy
Code duplication between future and scheduled task has been refactored pulling up common code into Obligation
Extracted safe task executor to remove further duplication