fixed a bug in package exclusion causing all exclude elements to be silently ignored
updated output and publish-content cvars for virtimage to account for possibility of multiple disks
finally fixed the data persistence and CTRL+C issues in image creation

spin/modules/shared/vms.py
 * removed ._prepare_transaction()
 * added ._tx_packages(), method returns a tuple of three lists - the packages
   to add, remove, and update on this run (this is essentially a combination
   of the previous .__select_packages(), .__deselect_packages(), and
   .__update_packages() methods)
 * removed .__can_handle_selinux() (see below)
 * instead of instantiating a VMYum instance directly within this instance of
   python, we use subprocess and create a subshell to run the install - this
   prevents data persistence issues (since data doesn't persist across
   sessions) and allows us considerably better control over the behavior in
   the KeyboardInterrupt case
 * fixed VMYum.resolveDeps() return cases
 * added code when __name__ == '__main__'; this is the case described above
 * the __main__ code case performs identical tasks to the ayum instance within
   .install(); see comments for details
changed comes-before relationship to conditionally-comes-before
added _prep_partitions, _check_partitions; analogous to _prep_ks_scripts and _check_ks_scripts
updated virtimage to work incrementally
spin/modules/extensions/vm/virtimage.py
 * no longer tracks 'pkglist', instead tracks 'pkglist-install-packages' cvar
 * virtimage now attempts to use prior output when dealing with images; if
   the partition layout has not changed between runs, prior output is used;
   otherwise, we start over
 * now defines two fs subclasses, SpinExtDiskMount and SpinPartitionedMount,
   which extend classes in imgcreate and appcreate, respectively
 * these new classes allow passing of a 'format' parameter to various methods
   that controls whether or not partitioning/formatting commands actually
   run; by passing false, existing partitions are used instead of creating
   new ones.
 * the above is a major hack that is by no means a 'realistic' solution; it
   merely serves the purpose of enabling incremental builds for virtimage,
   nothing more
updated vmware event to run with latest vm changes
spin/modules/extensions/vm/virtimage.py
 * virtimage now provides virtimage-raw and virtimage-conf (list of raw disk
   images and the config file, respectively)
spin/modules/extensions/vm/vmware.py
 * vmware no longer requires virtimage-raw-disk-images; it instead requires
   virtimage-raw
 * now uses subprocess instead of shlib
 * corrected output behavior; now merely outputs the .tgz generated (this
   may change in the future to be instead the four output files simply
   because it is faster; or, may add an @compress option)
fixed repos event to look for 'exclude' rather than 'exclude-package'
branch merge
removed log entry for packages event
no longer use virt-pack to package vmware images; added @compress option
removed vmware module; contents merged with virtimage; output generated with @vmware = True
packages event now provides 'comps-group-info'
 * comps-group-info is a list of (groupid, default, optional) tuples,
   where default and optional are boolean values indicating whether the
   packages of the given type should be included in installed systems by
   default
added '@optional' and '@default' to /appliance/packages/group schema
added virtimage schema
modified installclasses we generate in product.img
spin/locals/installclass.py
 * installclasses now only have one task, 'Default', which contains all
   groups in the groupfile
 * all installclasses now contain '%(setGroupSelection)s' macros which are
   replaced by _generate_installclass(), in product-image.py
spin/modules/core/installer/product-image.py
 * ._generate_installclass() no longer replaces 'default_groups' or
   'all_groups'; it instead replaces 'groups' and 'setGroupSelection'
 * added ._make_setGroupSelection(), a method that generates the
   setGroupSelection() method for the installclass.  Currently this doesn't
   need to be localized; however, this may not always be the case.
merged with trunk
modified kickstart locals to pass on failed import of pykickstart (temporary until pykickstart is required)
virtimage: defaulting dovmx to false; fixing path in publish-content
changed non meta test event for autoclean from 'comps' to 'packages'