RunAsync method for outputting multiple values

Added ```runAsync``` method to allow producing multiple values while running an action on a scheduler.

The drawback is that the action is run immediately and observers might not get any or all of the produced values. An overload lets the client specify a subject (such as ReplaySubject) to reliably capture all values and replay them to Observers. Otherwise, it just acts as a cold observable with the additional option to cancel the schedule and/or the action.