web interface cleanup:
 * use multiline strings;
 * get rid of reduce("") += anti-pattern in favor of map{}.join,
   which is cleaner and causes less string copying.
port most updaters to new_tarball_versions API