pkgman: Add command resolve-build-dependencies

This is a service command for haikuporter. It resolves the dependencies
for a package to be built and lists them, so that haikuporter can
prepare the build environment accordingly.

The implementation isn't quite finished yet. Currently the packages are
printed only with name and version, while it would probably be more
helpful to print the path of the package file. Also, the package itself
(respectively a dummy package) is printed as well.
BSolverRepository: Add SetPriority()
pkgman: Simplify and rename resolve-build-dependencies

* Now it only gets a package (info) file and a single list of
  repository directories, optionally with priority, and resolves the
  package's dependencies. The more complex two resolving steps it did
  before can just as well be done by haikuporter, and this way the
  command is more flexible.
* Rename to resolve-dependencies.
* Some TODOs still remain.
BSolver: Add VerifyInstallation()

... and implement it in LibsolvSolver.
pkgman resolve-dependencies: Verify result

* Make sure that the computed dependencies don't themselves depend on
  the specified package.
* Print only the actual dependencies, not the specified package.
BSolverRepository::AddPackage(): Add optional return parameter

... returning the added BSolverPackage object.
pkgman resolve-dependencies: Print package paths

... instead of package name and version. The command should now
work as required by haikuporter.
pkgman resolve-dependencies: Avoid code duplication
pkgman resolve-dependencies: Improve usage text formatting
Make LibSolv a mandatory package

... so it is actually installed on the image.
bindfs: Fix double deletion of root node on unmount

The VFS calls the FS's put_vnode() for all nodes, including the root
node, prior to calling unmount().
packagefs: Fix adding package links twice to volume

PackageLinkDirectory::NotifyDirectoryAdded() first notified the listener
(Volume) about the directory itself, then about the links it contained.
Since Volume adds the nodes recursively, the latter were added twice,
resulting in a corrupted ID hash table.
packagefs: Acquire missing reference for the root dir

We need one for the ID table and one for the volume itself.
packagefs: Acquire missing reference for shine-through dirs

Since we publish shine-through directories directly to the VFS, we need
to acquire an additional reference, because we release a reference when
a node is put.
packagefs: Fix handling of package-links directory on unmount

* Volume::_RemovePackageLinksDirectory(): We don't want to call
  _RemovePackageLinksNode(). Besides that the ID hash table has already
  been emptied before and we would thus release a reference to the node
  erroneously, the method doesn't do anything we want anyway. We don't
  want any children to be removed, since we have unregistered the
  volume's packages already (which removes the respective package link
  directories); the remaining ones are from other volumes and not ours
  to remove.
* PackageFSRoot: Release a reference to the package links directory in
  the destructor. We create the directory in Init() after all and no one
  else takes over ownership.
packagefs: AttributeIndex: Support duplicates correctly

The tree comparisons didn't allow for different Nodes having the same
attribute value. Therefore only the first node would be added and later
we would try to remove a node not actually in the tree, leading to a
crash.

packagefs seems to finally unmount cleanly, now.
VM: Fix vm_block_address_range() area protection

B_ALREADY_WIRED, which was erroneously passed for the area protection
parameter to map_backing_store(), has the value 7 which implies user
readable and writable. Hence the address ranges around 0xdeadbeef and
0xcccccccc could actually be read and written from anywhere.
Fix build without xattrs being used

* need to invoke fs_fopen_attr() instead of fs_open_attr()
Bring back libroot_build.a for now.

* the corresponding TODO has to be dealt with at a later stage
VFS: _kern_open_dir(): Fix NULL path case

It would create an empty path buffer and pass that on to dir_open(),
which accepts NULL, but not empty paths.