Updated our spectrogram to be colored based upon magnitude.

This commit alters our spectrogram vector allocation code to add a Z
value for each point, and to shift the values into a sane range.
Additionally, this commit updates our fragment shader to color the
points along a gradient based upon those Z values.
Updated our render loop to limit its FPS.

This commit alters our OpenGL rendering loop to limit itself to
approximately (depending on the CPU clock's granularity, mostly) 20
frames per second. This greatly reduces the CPU usage while rendering.
Switched from FFMPEG to libmad for MP3 decoding.

FFMPEG's MP3 decoder is either very hard to use properly or is utterly
broken. Even FFMPEG's encoding/decoding example suffers from a problem
where the resulting raw PCM data is somewhat corrupt. libmad doesn't
seem to suffer from these problems, and produces very nice PCM output.
Made some small cleanup changes.