update_rib_firmware: make the progress message mechanism less stupid

This was a prime example of horrible API design, so while this is
technically a backwards incompatibility, it's worth changing. The
'progress' callback now simply gets single-line messages and is
responsible for doing any and all presentiation it wants to do. Much
cleaner.
update_rib_firmware: allow updates by version number

Now that firmware.conf contains all known versions, we can make
update_rib_firmware use this information. While we're at it, modify the
downloader to support the better progress messages. Oh and allow the
user to specify a .scexe file as well!