mixer: remove separate info list

Each mixer_ctl has an associated snd_ctl_elem_info, which was
kept in a separate array with pointers from the mixer_ctl to
its corresponding snd_ctl_elem_info. This means double
pointer dereferences when looking up the info. It also means
extra work to add support for extending the arrays to include
dynamically added controls because the pointers from the ctl
array to the info array would have to be updated.

This patch removes the info list and gives each mixer_ctl struct
its own local snd_ctl_elem_info, removing the additional pointer
dereferencing.