ReactiveCocoa/ReactiveCocoa — pull request #1628 by jspahrsummers (2014-12-16 09:10:45+00:00)
Title: [WIP] Improve Action class, remove all automatic scheduling

I kept trying to fix the [subscription behavior](https://github.com/ReactiveCocoa/ReactiveCocoa/issues/1621) of the `Action` properties in various ways, and it was incredibly difficult, eventually leading me to the realization that **complecting scheduling/threading concerns with all the other stuff happening in `Action` is hugely unnecessary**.

Primarily, it's hard to implement automatic scheduling in a way that plays nicely with all callers. Sometimes you do want stuff to happen entirely in the background. Sometimes you want `enabled` to update ASAP, but values to still be delivered on the main thread. Sometimes you want everything to happen on the main thread. There's no easy answer here except to shift that concern outside of the `Action` class entirely.

This change seems nicely aligned with the more functional nature of Swift too. The super side-effect-y bits (concurrency) can live at the fringes, instead of introducing complexity into the core RAC concepts.

Resolves #1621.

**To do:**

- [ ] Add UI-specific wrapper class that is compatible with Objective-C, and can be used with `NSControl`, `UIControl`, etc.