A richer dotfileTarget

Introduce a `DotfileTarget` type, which stores all the components of a
dotfile separately: the base, the path relative to the base (if any),
the file name, the tag (if any), and the host (if any).