Add delay and once

`delay` takes a time in ms and a signal and executes events from the signal after a delay of ms

`once` takes a signal and executes the first event from that signal and then stops
I have to agree that it seems like a shame to have to modify the contract of Signal to implement `once`.

My preference would be to have signals return a `Subscription` from their `subscribe` methods, a la Rx.

In any case, we have to answer the question: what sort of FRP are we trying to capture here? If signals are meant to be infinite, things like `once` need to be implemented using `foldp` instead, I believe.