Generic coroutine

Instead of:

```python
@coroutine
def std(consumer):
    while True:
        frame = yield
        consumer.send(np.std(frame))

inject(generate(), std(consumer()))
```
we can do
```python
inject(generete(), process(np.std, consumer())
```