New mixer API

For you interested. Still work in progress. Do not merge.

Addresses #665.
Shouldn't these be tied to the `notify:volume` events instead?