Issue title: Cross-references in docstrings / *describe* bufferes
 Issue body: We need to turn docstring cross references to `lisp://` URLs.
For instance, the docstring of `buffer-load` mentions `buffer-load-hook`: we would turn it into a clickable link which would open the appropriate description page.

This was discussed in #745.

It shouldn't be too hard: parse "`[^[:space:]]*'" or something like that and replace it with `lisp://(describe MATCH)`.
`describe` would be a smart function which finds out which description function to call depending on the type.
If a symbol has multiple types (e.g. both a function and a variable), then we would query the user.

Thoughts?
 Comments: 
 Comment 0: I feel like 1984 editing your messages :-D
 Comment 1: I really like this idea. I assume the idea is kind of like how when clicking M-. on a object if Lisp finds multiple things like several methods with the name, you select the one that you are interested in?
 Comment 2: Exactly!

 Comment 3: > If a symbol has multiple types (e.g. both a function and a variable), then we would query the user.

I like the idea but there should be a smarter way to deal with the above.  
 Comment 4: There is no smarter way. A symbol in a Lisp-2 is ambiguous and has to be resolved. An alternative may be displaying both a listing for the symbol as a function as and as a variable.

For example:

`xyz (variable)`
`xyz (function)`
 Comment 5: This is the different topic of _symbol namespaces_ (whether we want to
resolve a symbol to a function, a class, a variable, etc.).

What the "target" slot solves is the problem of how to refer to _values_
(unprintable objects).
Note that the problem of symbol namespaces does not occur in the context
of this patch.

 Comment 6: About symbol namespaces: your suggestion could work.
In case of ambiguity (e.g. because the parentheses were forgotten), we
can prompt the user for the namespace.

 Comment 7: Would be nice to have bi-directional linking, i.e. list all symbols where the current symbol help page is referenced.
 Comment 8: Partially done in https://github.com/atlas-engineer/nyxt/commit/ed97f71e66c7a4b3eea481d3bb7e5951fb88df76.

But I'd like to address a few points:

- The regex could be "`[^'\\s]+'" to include any kind of whitespace.
- Multiple definitions are not supported.  Try with `nyxt:name`.

For this last point, I suggest the following:
- Call `describe-any` instead of the entire `(cond ... 'describe-variable ...)`.
- Modify `describe-any` to take an input argument.
- Add a preprocessor filter to describe-any so that only exact matches are displayed.
- Add a prompter option so that if only one suggestion is present, fire up the default action.

What do you think @aartaka ?
 Comment 9: OK, I've already done something here, I'll push soon.
 Comment 10: > #2063 is now in, we can disambiguate symbols!
> 
> All we miss is bi-directional listing, that is, listing the docstrings where a symbol is referenced. Not an easy one.

But actually, what's the use-case for that? Given how chaotic our references to symbols are, I doubt one can build any reasonable usage patter out of those :)
 Comment 11: I agree, maybe it's enough to reference calls/uses (like `sly-edit-uses`).

 Comment 12: Closing in favor of #2113, where more instances of inspection are mentioned.
{'source': 'GithubIssues', 'repo_name_with_owner': 'atlas-engineer/nyxt', 'issue_id': 708855949, 'repo_stars': 3802.0}