Make a more powerful marking system

The original "tabulated list marking" is just putting characters in the
beginning of lines, which is rather limited, so:

  - add ‘guix-list-marked’ variable with all needed information about
    marks;

  - change mark commands accordingly;

  - replace ‘tabulated-list-sort’ with ‘guix-list-sort’ to restore marks
    after sorting.
Clarify the meaning of ID package parameter
Add ‘guix-get-installed-outputs’ function
Add ‘guix-completing-read-multiple’ function
Improve selecting a window for displaying info
Add ‘guix-get-entry-by-id’ function
Move "getting info" code from “backend” to “base”

“guix-backend.el” should only contain the code for dealing with REPL and
for evaluating expressions.
Improve ‘guix-make-guile-expression’ function
Add partial support for package actions

The Guile code is not ready, but interface functions can rely on the
‘guix-process-package-actions’ function to perform installing /
upgrading / removing.
Make buttons for performing package actions work
Improve marking packages

Check before marking if a package can be installed or deleted, make it
possible to mark several outputs for installing and so on.
Add executing operations on marked packages
Remove unused vars from ‘guix-define-buffer-type’
Add confirmation before processing an operation
Slight improvement in ‘guix-generations’ function