This allows for users to use `await` or `yield return` for the function and make it use less overhead (no Task object creation). This will also include adding the EventMonoBehvaiour DoTS functions for all Awaitable types...