RACReduce()

I've always wanted a more general equivalent of `-reduceEach:`, for when using operators like `-flattenMap:`, `-filter:`, and `-doNext:` on a signal that sends tuples.

This PR is my attempt at that. It adds `RACReduce()`, an overloaded *function* that takes as input a block with arity between 1 and 15, with a return type of `id`, `BOOL`, or `void`, and returns a block that has the same return type, but takes a single `RACTuple`.

This didn't have much of an impact on RAC's code, but I see it as being quite useful for *using* RAC, particularly when composing signals based on `-rac_signalForSelector:`.