Improve prelude-open-with

Now it uses `xdg-open` where it makes sense. It also accepts a prefix
argument that forces manual selection of a command to run.