Migrate from dmenu to an integrated UI.

Dmenu had a few limitations, namely...
 - fuzzy matching. If you had wanted to go google.com but history only
   had "google.com.au" in it, you couldn't go where you wanted.
 - blocking the UI. This just made everything lock up, which is
   obviously not ideal. Threads were not the solution.
 - Using threads just for following meant the UI wasn't redrawn when you
   cancelled a follow. This isn't the case now.

The fact that it's all asynchronous now means that behaviour is
essentially undefined if a single window tries to request multiple
downloads, though. I'll fix that soon.

Also, and I'm sorry, this fixes a tonne of small bugs I found while
working on this.