loader-emacs: Unconditionally refresh packages when installing

Otherwise, we may not have the package list at all, and install will
fail.  This happens relatively infrequently, so I think it's okay to do
it for every package.
hc: A rewrite of homectl in Python

This is the beginning of what will become homectl 0.3 -- which actually
maintains a tree of symlinks similar to homebrew (so as to avoid making
a mess of $PATH etc.).

It also supports OS and arch-dependent components inside a package, so
if a homectl package is a binary package, only relevant binaries will be
made available in $PATH etc.
hc: Minor tweaks

- Drop Package.name; it's not used
- Ensure packages have a .hcpkg extension
- Log when we skip linking a file in ~ because it already exists
hc: Require upgrade via an explicit command

Don't just change the user's stuff without asking. :)
hc: Better logging infra

Provide log_*() functions for various types of messages, which are
easier to use.  Also fold both versions of run() together now that we
have better logging infra.
hc: First cut at API docs

These are kind of dumb/ambiguous, and I probably need to write a decent
user-facing doc before I can come up with proper detailed API docs.  But
they're enough to give some context and make it easier to read the code
(I hope).