lavr: typedef internal structs in internal.h

Simplifies header dependencies by not including all other internal headers
in internal.h.
lavr: add a public function for setting a custom channel map

This allows reordering, duplication, and silencing of input channels.
lavr: cosmetics: reindent
lavr: mix: reduce the mixing matrix when possible

If the matrix results in an output channel not getting a contribution
from any input channel and the corresponding input channel does not
contribute to any outputs, we can skip the channel during mixing and
silence it after mixing.

If the matrix results in an input channel not contributing to any output
channels and it is not in the output mix, or if the input channel only
contributes fully to the same output channel, we can skip the channel
during mixing.

If the matrix results in an output channel only getting full
contribution from the corresponding input channel and that input channel
does not contribute to any other output channels, we can skip the
channel during mixing.
lavr: log channel conversion description for any-to-any functions