Finally works with Coroutines

Did a major rewrite of the interfaces to change running functions from
void to IEnumerator and call these coroutines from a singleton class to
avoid inheriting directly from MonoBehaviour.