Implement Reduce transformer

To avoid context switching, this transformer can reuse other
transformers

Like:
```
              |
              v
   /---------------------\
   | Add Field (thread1) |
   \---------------------/
              |
              v
   /------------------------\
   | Change Field (thread2) |
   \------------------------/
              |
              v
  /-----------------------\
  | Remove Field (thread3)|
  \-----------------------/
              |
              v
```
to:
```
         |                      /---------------------\
         |                 /----| Add Field (thread1) |
         |                 |    \---------------------/
         v                 |
   /------------------\    |    /------------------------\
   | Reduce (thread1) |----+----| Change field (thread1) |
   \------------------/    |    \------------------------/
         |                 |
         |                 |    /------------------------\
         |                 \----| Remove Field (thread1) |
         |                      \------------------------/
         v
```