Refactor Producer as a struct

Also rename BufferedProducer to EventBuffer, and have it _return_ a
Producer instead, since the type can’t be derived from anymore.
Refactor Signal into a final class—compose!

Inheritance sucks.