Allow Promises to resolve asynchronously

Stop blocking threads, man.
Rename Observable to Signal

Per discussion in #1382.
Rename Enumerable/Enumerator to Producer/Consumer
Better names for bridging methods