Autologin on serial console with systemd
Replace major.minor scheme with a single version

Series 7 of CentOS seems to have started using a micro version as
well, and this confuses the script; now we have the option of
specifying the version exactly as it is given on the FTP site.
Only validate kickstart files for supported versions

The ksvalidator script on the host does not necessarily support the
latest version of CentOS.
Use xz instead of gzip as initrd compressor
Use miniscule letters only in filenames
%packages and %post sections must end with %end
Use common stem for distribution and EPEL if possible
Use architecture-specific program instead of general kvm
Tell which command is missing, if any

Instead of just saying that some prerequisite is not there, specify
which one did not pass the test. Also, move the exit code to the
message function instead of having it along with the test.
Require QEmu 1.5 or newer

Version 1.5 or newer has virtio-scsi, which enables us to use fstrim
instead of zerofree.
Test if only a beta repository for EPEL is available

EPEL7 is not out of beta yet, and unfortunately the naming convention
changes from the regular releases.
Use virtio-scsi-pci instead of virtio-blk-pci

The performance of the former is supposedly better, and the kernel
will use the regular /dev/sd? names instead of the odd /dev/vd?

RHEL 5 must still use virtio-blk-pci due to missing drivers.
Use fstrim instead of zerofree on RHEL >= 6

zerofree is no longer available as of RHEL 6. However, fstrim is
introduced and will do the same thing if we have QEmu 1.5 or newer.
Remove wget from package list

It is not actually used in the installation, so we don't add it to
the list of packages to explicitly install.
Use agetty instead of mingetty

RHEL7 doesn't include mingetty anymore; instead, regular agetty will
have to do.

RHEL 5 and 6 agetty cannot handle serial console
Remove deprecated kernel parameter 'serial'
Increase memory available to VM in installation
Increase size of /boot partition

RHEL7 needs at least 96MiB of /boot to generate the kernel, otherwise
you'll get messages from anaconda that grub2-install failed.
Use /etc/rc.d/rc.local instead of /etc/rc.local

The latter is only a symlink to the former for backward compatibility.
Grub2 configuration goes in /etc

RHEL 5 and 6 uses GRUB 1, which is configured directly in
/boot/grub/grub.conf, whereas RHEL 7 has switched to GRUB 2 which
is vastly more complicated and therefore usually configured by a
script which sources /etc/default/grub.