`-flattenMap:` exists because it's a primitive, and `-flatten` and `-reduceEach:` both use it (directly or indirectly).

There are a lot of operators that could have reducing variants, but it could be bloat-y to add them all. I even wanted to remove `+combineLatest:reduce:` and `+zip:reduce:` (see ReactiveCocoa/ReactiveCocoa#622), but we decided they were too convenient.