permit to use a postprocessed nbdroot

When using a postprocessed nbdroot like:
actions:
- deploy:
    to: downloads
    postprocess:
      docker:
        image: debian:buster
        steps:
         - mkdir rootfs
         - cd rootfs && tar xpf ../rootfs*
         - mke2fs -d . -m 0 -t ext2 ../rootfs.ext2 1600M
    images:
      stage3:
        url: http://xxx/root.tar.xz
        compression: xz

- deploy:
    protocols:
      lava-xnbd:
      - action: nbd-deploy
        request: set_port
    to: nbd
    nbdroot:
      url: downloads://rootfs.ext2

...LAVA fail with a keyerror on nbdroot.

Problem #1:
This is due that only downloaded files(via class DownloadHandler) ran the spetial "nbdroot register":
        if "lava-xnbd" in self.parameters and nbdroot:
            self.parameters["lava-xnbd"]["nbdroot"] = nbdroot
The solution is to register nbdroot also for pre-downloaded files. (via PreDownloadedAction)

Problem #2:
But PreDownloadedAction only know full path to the nbdroot, so we need
to add a check in XnbdAction() since "normal nbdroot" are stored via
relative path.

Problem #3:
The last problem is that when using a postprocessed NBD root,
NBDSERVERIP and NBDSERVERPORT are not replaced.
So the "use NBD" check in BootloaderCommandOverlay need to be replaced.
16 jobs for nbd-root-from-download in 12 minutes and 10 seconds (queued for 4 seconds)
latest
Status Job ID Name Coverage
  Test
passed #119041
amd64
dispatcher-debian-10

00:02:18

passed #119043
amd64
dispatcher-debian-11

00:02:34

passed #119042
amd64
server-debian-10

00:03:03

passed #119044
amd64
server-debian-11

00:05:39

 
  Analyze
passed #119045
amd64-dind
bandit-sast

00:00:53

failed #119046
amd64
black

00:00:33

passed #119047
amd64
code_quality

00:00:21

passed #119052
amd64
codespell

00:00:19

passed #119048
amd64
coverage

00:06:29

60.91%
passed #119049
amd64
dockerfiles

00:00:15

passed #119051
amd64
pylint

00:03:04

passed #119050
amd64
schemas

00:00:30

 
  Build
skipped #119054
amd64
debian/10
skipped #119053
amd64
doc
skipped #119055
amd64-dind
docker-amd64-dispatcher
skipped #119056
amd64-dind
docker-amd64-server
 
Name Stage Failure
failed
black Analyze
 
return connection


would reformat lava_dispatcher/actions/deploy/download.py
All done! 💥 💔 💥
2 files would be reformatted, 531 files would be left unchanged.
Cleaning up file based variables
ERROR: Job failed: exit code 1