DistroPackage: fix empty url and revision handling and fix GitHub updater as a side effect
package updater: ack is a package from hell which matches half of nixpkgs by name and/or version, so have to handle it as a special case.
package updater: remove csv output, it can be replicated using sqlite3 cli tool
UI changes
Some more minor UI tweeks.
Move patch and needs-attention report to separate row on top.
web interface: move header to template
DistroPackage::Nix: deduplicate packages in a more deterministic way to cause less rebuilds.

This hopefully lets us avoid randomly flipping between eg profiling and no_profiling Haskell packages.
web interface: aggregate SQL queries to get around 3x speedup for /outdated report
web interface: steal the pieces of the fresh Bootstrap that are missing in the older one.
web interface: factor out a common layout for reports
web interface: minor rendering improvements for /pd
web interface: sort CVEs most recent first, hopefully improving usability
package updater: when there are several candidate version strings, try the ones located closer to the hash first