New mixer API

For you interested. Still work in progress. Do not merge.

Addresses #665.
Reason for doing it this way is that I want it to work even if subclass implementors forget to call the superclass' init method.