New mixer API

For you interested. Still work in progress. Do not merge.

Addresses #665.
Strictly speaking helpers like this that don't even touch self could be split out to functions instead of class methods. Would also be better for testing them if we have more complicated ones than this example.