New mixer API

For you interested. Still work in progress. Do not merge.

Addresses #665.
Good idea. Switched it around so that audio injects itself into the mixer if the software mixer is in use in commit 5f091c10c25328fba087a973946d5025c3244a95.