Reboot without Promise<T> and synchronous enumeration

_(Doing this here instead of the ReactiveCocoa repository, because I'm back to super experimental stuff again.)_

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>`](https://github.com/jspahrsummers/RxSwift/blob/why-lisa-why-why/RxSwift/Enumerable.swift) representing a cold signal, and [`Observable<T>`](https://github.com/jspahrsummers/RxSwift/blob/why-lisa-why-why/RxSwift/Observable.swift) representing a hot signal—both defined very similarly to what you'd find today, with the notable Elm-inspired change that `Observable` must always have a current value (just like a property!), and cannot complete or error.

I suspect this will simplify a lot of things, but we'll have to see how it plays out.
Should this be the `Sink` protocol instead?

(I go back and forth on `Observer` being a function type. On the one hand, closure types can’t be extended, etc. On the other hand, you can wrap things that can be extended in closures.)