A lot of improvements.

Packages are now compared with each other based on a string describing
their uniqueness. The pattern is <name>:<architecture> <version>.

Actions have been moved to an object representing a Craft application, which has a reference to the
configuration being used, as well as to the 'installed' and 'available' sets.

archive.getfiles() now provides the file list in reversed order, since
that is the removal path used during package uninstallation.