Add the notion of packages

Allows adding only certain portions of subdirectories to a repository.

The reason I added this is `~/.config`. I want to add only certain subdirectories of `~/.config` to my repository, and not have to maintain a huge .gitignore file.

Packages are declared explicitely in the config file, e.g. for `~/.config`:
```
[dotfiles]
packages = ['config']
```

This allows to have e.g. ``config/awesome`` in the repository that points to ``~/.config/awesome``.

I also took the freedom to reorganize modules a bit, and added a --dry-run option.