Update Scenario to allow asynchronous operation

Scenario execution is no longer inherently a blocking operation.  This
allows Scenario to be used to coordinate various background actions
(animations, etc.) as well as cutscenes!