Replace nested subscribers with a single subscriber

We can combine `-[RACSignal flatten]` and `-[RACSignal materialize]` to turn the
projects signal into a signal of changes to all projects. New and updated
projects are represented by "next" RACEvents, and deleted projects are
represented by "completed" RACEvents.

For deleted projects, we need to remove the project from the table view data
source, but the "completed" RACEvent doesn't have any project information. To
fix this, there is a small additional bit of complexity: The materialized
updates are paired with the first project instance, so the subscriber actually
receives RACTuples containing the first project and the event.
Simplify table updates

This commit uses a NSMutableOrderedSet combined with a NSMutableDictionary to
simulate an ordered dictionary. This makes the projects subscriber simpler.