Fix #147: Split coroutine module and unify API

@sensej: You always complained that you had to use that awkward class-based averager because you could not send after yielding stopped. There you go.

TODO:
 - [ ] Check the docs
 - [ ] Add absorptivity filter