homectl list: List full paths to packages

That way it's easy to see exactly which packages are enabled -- using
just the name is less user-friendly because there might be multiple packages
with the same name lying around.
homectl: Make name-validation more user friendly

Emit an appropriate error message depending on what the actual problem
is.
homectl enable/disable: Use paths, not names

Take the path to the package when enabling/disabling packages.

For enable, this change is not user-visible because we did this before.
But it DOES allow us to support enabling multiple packages at different
paths with the same basename, which helps us to handle name collisions
(e.g. with packages from different sources).

For diable, this change IS user-visible -- users must now specify the
path instead of just the basename.  This is ultimately more convenient
though because they can take advantage of shell tab-completion whereas
they couldn't before.
homectl: Use resolve-path instead of homectl-resolve-path directly

My previous couple commits called homectl-resolve-path directly, which
is wrong because it may not be in $PATH.  Use the helper function that
was already there (oops).
homectl enable: Create links with consistent names

If we create links using mktemp, then "homectl disable" followed
"homectl enable" on a link that is checked in to Git will cause Git to
report there is a difference, even if there isn't one (morally
speaking).  Fixing this up manually is annoying and potentially
confusing.

Instead, sanitize the link target and use it for the link name as well.
That way we are guaranteed to use the same link name for the same link
target every time, and a disable/enable pair won't cause Git to report
spurious changes.
Merge branch 'develop' into feature/loader-emacs
loader-emacs: Add support for package.el

Support consists of a homectl-require function which will use package.el
to fetch third-party packages required by a homectl package.  We also
include a mechanism for downloading/installing package.el if it's not
already available.