render songs as comma separated values

Create a simple rendering scheme that will print a header in each field
for the field name and then render each song as a list of fields
separated by commas. Such a file is suitable for importing into most
spreadsheet software, where it can be sorted, formatted, and printed.

Close #3 print comma separated list of songs
fetch song detail from the web

Use the relative URLs in the song list to go out to the web and download
the song detail documents rather than reading them off the local
filesystem.

Close #4 download song detail
clean up apostrophes

For some reason, probably an ill-considered attempt at improving the
style of the site, the apostrophes in the list of songs were entered as
right single quotes rather than simple apostrophes. Replace them before
parsing.
fetch song list from the web

Instead of parsing a file on disk, hardcode the URI of the different
song lists, parse the command line arguments to figure out which one to
use, and then download it.

Also simplify and restrict imports to reduce clutter and repeated
namespaces, add documentation to a few sections to clarify the code,
clean up whitespace to make the code more readable, and convert several
function compositions of the form "(a . b) c" to "a . b $ c" to better
follow idiomatic Haskell.

Close #5 download song list