Add documentation to cwfm.song.js and improve code readability.

This updates adds some basic documentation to the code in cwfm.song.js. I ended up re-organizing the code a bit to make it easier to document, and hopefully easier to read. Nothing changed from a functionality standpoint, just moving things around.