Add new 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.
Merge pull request #6 from luisfdez/improvement/type-independent-dependencies

Add new three independent classes to manage the different dependencies