bookmarks: untabify
completion: expl is a local variable
bookmarks: use :A modifier to get full path
bookmarks: allow completion after the bookmark
bookmarks: use dynamic named directories for bookmarks

This allows to use bookmarks everywhere. A directory is expanded from
its bookmark with `~[@bookmark]`. Moreover, this allows us to display
the bookmark name in `%~` prompt expansion. And we get completion for
almost free.

However, typing `~@[...]` is troublesome... Let's have a look at ZLE
to fix that.
bookmarks: `bookmark` function can be used to delete a bookmark
bookmarks: sort links in length order to get the most precise bookmark

When converting a name to a shorten name with bookmark, some bookmarks
may overlap. For example, we could have a bookmark for `/A` and a
bookmark for `/A/B`. Depending on the name of the bookmark, `/A/B`
could be named `@~[A]/B` instead of `@~[B]`.
bookmarks: use `@@` to insert `~@[` through ZLE