Handle test and benchmark dependencies through the resolver properly.
Previously, test and benchmark dependencies were handled by editing the package description to include or exclude those stanzas before running the dependency resolver. Test and benchmark dependencies could only be installed for source packages because no package description is available for named packages before dependency resolution. Now, test and benchmark stanzas are enabled or disabled through constraints passed to the dependency resolver. This way, we can install dependencies for the test suites of target packages without propagating '--enable-tests' through the entire dependency tree; i.e., tests and benchmarks, when enabled, are built only for target packages. Later, this will allow us to automatically run test suites and, e.g., install only upon their success.