Don't catch errors thrown by emission callback.

I just wanted to catch errors throw during the reduce stage, but I
accidentally also caught any errors thrown by the async callback
function.
Switched from using reduce-iterator to processor.

Originally, ControlSignal processed the slots' results by performing
a reduce operation using an iterator function provided during the
signal's construction. While this worked, it could be really inefficent
for certain types of operations. For example, simply getting the results
as an array required pushing the elements one by one onto another, duplicate
array.

Now, the ControlSignal uses a "processor." This function is given all
the results as an array. It can do whatever it wants; its return value
is given to the emission callback. To get an array of the results, all
you need is an "identity" function that returns its first parameter.