Add new three independent classes to manage the different dependencies

The class `dependency.pp` is losing readability as new features are being integrated. This patch proposes a new approach, using different classes for different types of packages: `exe.pp`, `pip.pp`, `msi.pp`.

Anyway, this patch doesn't delete the previous `dependency.pp`.