[test] Add deallocation to virtual channel test

Improve virtual channel test by adding an instrument envelope and checking
channel deallocation after the envelope expires.

Signed-off-by: Claudio Matsuoka <cmatsuoka@gmail.com>
Refactor virtual channel code

Signed-off-by: Claudio Matsuoka <cmatsuoka@gmail.com>
Change virtual voice congestion resolution method

When a new virtual channel is requested and none is available, we were
reusing the oldest one. Change to the resolution method used in Impulse
Tracker where the background channel with lowest volume is reused.

Signed-off-by: Claudio Matsuoka <cmatsuoka@gmail.com>