Move sysctl collection to kernel module and add new locations

The sysctl configuration and state belongs to the kernel. Reflect
this by moving the collection of sysctl.conf to the kernel module
(where sysctl -a is already captured) and add collection of the
/etc/sysctl.d and /lib/sysctl.d directories.
Add systemd module

Add a new module to collect systemd information. This is the start
of a general re-organisation of the init related information
captured by sos.

Initially collect systemctl and journalctl command output as well
as (some) configuration files owned by the package.
Fix typo in systemd module

Forgot to refresh the copy of the module in HEAD; pickup two
additional fixes added in testing.
Do not attempt to store SELinux context for /proc and /sys

Storing a (correct) SELinux context for files in procfs and sysfs
leads to tonnes of ugly spew when the tarball is unpacked as these
contexts are not permitted on "normal" file systems:

tar: sosreport-rhel7-vm1-20121210145629/proc/sys/vm: Cannot setfilecon: Permission denied
tar: sosreport-rhel7-vm1-20121210145629/proc/sys/vm/percpu_pagelist_fraction: Cannot setfilecon: Permission denied
tar: sosreport-rhel7-vm1-20121210145629/proc/sys/vm: Cannot setfilecon: Permission denied
tar: sosreport-rhel7-vm1-20121210145629/proc/sys/vm/scan_unevictable_pages: Cannot setfilecon: Permission denied

Etc.

Check for these path prefixes in TarFileArchive.add_file() and skip
generating a pax header for them.

This isn't a perfect fix; it may be better to move this up to a
higer layer (i.e. within the Plugin class's file handling routines)
and also to filter by context rather than path (since SELinux
contexts are a property of an inode not a path and a user could
mount these file systems at other locations).

This partially fixes Issue #79 but I'll keep it open for the time
being to track these improvements.
Remove diagnose() methods from plugins

Delete the diagnose() methods from all modules still using it.
The diagnostics feature never worked well and is better implemented
to run after-the-fact on the data collected in the tarball.
Delete selinux module's analyze() method

The analyze machinery hasn't been hooked up since commit 6ea48cb.
The use of these methods has also not been especially clear: some
modules trigger additional file/command collection here while
others only add alerts (the original purpose of analyze()). Other
module call the addAlert() interface from their setup() method.

Move the SELinux module's analyze functionality into the main
setup() method but make it conditional on setroubleshoot being
installed as it's necessary for the current implementation.
Delete kernel analyze() method and add more sysfs module files

The analyze methods are no longer used and the kernel module's
regex-table based taint checking is kinda klunky and a maintenance
problem.

Delete this code but collect the initstate, refcnt and taint files
from /sys/modules/*.
Remove analyze() method from yum module

The yum module's analyze method is pretty useless. It just checks
for extra /etc/yum.repos.d files on RHEL systems. Delete it.
Remove diagnose() wiring

Complete the removal of the diagnose functionality by removing the
methods in the Plugin class and sosreport module, command line
options and documentation.
Remove analyze() wiring

The analyze() methods haven't been used since commit 6ea48cb and
their functonality has now been moved or removed in all modules.

Delete the last bits of wiring and docs references.
Add more commands to iscsi initiator module

Add additional iscsiadm command collection to the iscsi module
and check for the iscsi-initiator-utils package on Red Hat systems.
Add SysV IPC module

Add a module to collect SysV IPC related information. Collect the
files in /proc/sysvipc/* as well as the traditional ipcs -a output.
Add /sys/firmware/acpi/tables to hardware module

Collect the ACPI tables present on the host system
Add mkqdisk -L output to cluster module
Collect additional files and command output for infiniband

Collect output of ibstat, ibstatus, ibhosts and the opensm and
openib configuration files.
Collect file lists for /var/lib

Collect a list of files and directories under /var/lib using ls -lR
and tree (if available).
Fix regression TarFileArchive regression

Commit 179d9bb introduced a regression in the TarFileArchive
class:

  (Pdb) bt
    /usr/sbin/sosreport(23)<module>()
  -> main(sys.argv[1:])
    /usr/lib/python2.7/site-packages/sos/sosreport.py(908)main()
  -> sos.execute()
    /usr/lib/python2.7/site-packages/sos/sosreport.py(901)execute()
  -> return self.final_work()
    /usr/lib/python2.7/site-packages/sos/sosreport.py(773)final_work()
  -> self._finish_logging()
    /usr/lib/python2.7/site-packages/sos/sosreport.py(376)_finish_logging()
  -> self.archive.add_file(self.sos_log_file.name,
  dest=os.path.join('sos_logs', 'sos.log'))
    /usr/lib/python2.7/site-packages/sos/utilities.py(280)add_file()
  -> self.tarfile.addfile(tar_info, fileobj)
    /usr/lib64/python2.7/tarfile.py(2015)addfile()
  -> buf = tarinfo.tobuf(self.format, self.encoding, self.errors)
    /usr/lib64/python2.7/tarfile.py(996)tobuf()
  -> return self.create_gnu_header(info)
    /usr/lib64/python2.7/tarfile.py(1027)create_gnu_header()
  -> return buf + self._create_header(info, GNU_FORMAT)
    /usr/lib64/python2.7/tarfile.py(1112)_create_header()
  -> itn(info.get("mtime", 0), 12, format),
  > /usr/lib64/python2.7/tarfile.py(212)itn()
  -> raise ValueError("overflow in number field")

The tarinfo mtime field is a float but the pax headers take a
string-encoded value. The tarinfo field was inadvertently converted to
a formatted string.

The problem is hard to track down because it's not always triggered;
the bug depends on the value of the string-encoded mtime date.
Update anaconda support

Update the anaconda module to support new log locations in recent
versions.
Use paths list in anaconda plugin

The previous commit introduced a paths list for the module to
collect but did not use it: fix the addCopySpecs call.
Re-work sunrpc module to make porting easier

Re-organise the sunrpc module so that the service check is in the
base (Plugin-derived) class but uses a service string defined only
in the subclasses. This allows the same checkenabled() to be used
for any policy that implements the needed runlevelByService() API.

This can serve as a prototype for a generic enabled-by-service
facility (mimicking existing files and packages checks) although
it currently needs considerable work to review and revise the
service and runlevel interfaces in the policy modules.

Related to Issue #77