Changed most of the code to be more scheme-like
Used named-let to do iteration, split functions better
Most of the changes here reflect using standard algorithms (unfold,
find, filter, etc) or the named let instead of the hack-job of nested
defines I was using before.

This makes the code not only more idiomatic (for guile) but also makes
it somewhat easier to read, as I'm using better indentation and am now
using spaces instead of hard tabs. I switched to spaces for scheme since
hard tabs to not parse very nicely when sending plain text to the REPL.
I do this using vim-slime, so having spaces is pretty much necessary in
using this tool in a sane manner.