Signal passing is incorrect
Problems of the current implementation:
- All Runnables---not just producers---trigger signals
- Blocked stages are not woken up
- Each stage needs to check the signal queue in addition to the usual element queue
Requirements for a new solution:
- Solve the problems above
- The framework should pass signals correctly through the pipeline architecture