Allow for packages to be installed directly from VCS
Packages installed via package-fetch are of the kind 'source, and
their extra properties may include a :upstream key (a list consisting
of the VC backend, a remote repository, a branch and a path within the
repository) and :rev key (indicating a specific revision to checkout).
* package.el (package-devel-dir): Add new option.
(package-desc): Allow an empty version string to be passed to
package-desc-from-define.
(package-desc-full-name): Handle source packages.
(vc-working-revision): Declare function for package-devel-commit.
(package-devel-commit): Add function.
(package-load-descriptor): Detect and handle source packages.
(package-load-all-descriptors): Use package-devel-dir.
(vc-clone): Declare function for package-unpack.
(package-unpack): Handle source packages.
(package-generate-description-file): Handle source packages by
ommiting a version number.
(package-install-from-archive): Check if a package is a source
package.
(package-fetch): Add new command
(package-desc-status): Check for source packages.
(package--remove-hidden): Hide regular packages from the package list
if a source package was installed.
(package-status-from-source): Add new face.
(package-menu--print-info-simple): Handle source packages.
(package-menu-mark-delete): Allow deleting source packages.
(package-menu--status-predicate): Sort source packages after
dependencies but before unsigned packages.
(package-menu-filter-by-status): Allow filtering by source packages.