[entropy.client.interfaces.package] split Package class, create new API

The Package has been split into multiple PackageAction based classes.
The new interface uses a factory (PackageActionFactory) to build
the PackageAction objects on behalf of the caller.

The new factory-based interface is clean, modular and faster than
the old Package spaghetti class.

Backward compatibility has been preserved, as long as caller doesn't
peek into internal structures and metadata. The old interface has
been deprecated and a new Entropy Client method called PackageActionFactory()
has been added.

Please migrate your code to the new API, the old API will be dropped in 1
solar year.
[client] migrate solo to the new PackageActionFactory API
[tests] port code to the new PackageActionFactory API
[RigoDaemon] migrate to the new PackageActionFactory API
[entropy.client.interfaces.package] drop unused metadata
[entropy.client.package] add _PackageFetchAction.package_path() for PackageKit
[entropy.tools] move struct import to global scope
[entropy.client.package] add initial preserved libraries support class
[entropy.client.package] move self._meta to _PackageInstallRemoveAction
[entropy.client.package] add metadata parameter to _get_system_root()
[entropy.client.package] remove useless del calls
[entropy.client.package] extend the preservedlibs module with more methods
[entropy.client.package] correctly handle symlinks to hardlinks, see Gentoo bug #406837
[entropy.client.package] initial preserved libraries support
[client] add new paths to POTFILES.in
[entropy.client.package] force self._root to unicode
[entropy.client.package] expose a list() method, wrap listAllPreservedLibraries()
[entropy.db] add atom field to preserved_libs metadata
[entropy.client.package] simplify PreservedLibraries.remove()
[solo.commands.preservedlibs] add new command "preservedlibs"