Reboot without Promise<T> and synchronous enumeration

I discovered while attempting to write an `AsyncEnumerable` extension for `NSURLSession` that promises + synchronous enumeration make for a really unpleasant combo.

It turns out promises still suck. Who knew?

Anyways, this brings it back to basics: plain `Enumerable<T>` representing a cold signal, and `Observable<T>` representing a hot signal—both defined very similarly to what you'd find today, with the notable Elm-inspired change that `Observable` _cannot complete or error_. I suspect this will simplify a lot of things, but we'll have to see how it plays out.