beer-song: Adopt functional style

As discussed in #79.

The original "Beer.sing" method is replaced by a "song" function -
"song" being on the same level of abstraction as "verse".