New mixer API

For you interested. Still work in progress. Do not merge.

Addresses #665.
Moving it to core doesn't help mixers with emitting mixer events, as they don't know anything about core.

A state tracker helper sounds like something to consider if/when we revamp the event system, like we've been talking about.