hardware: new submodule for hardware enumeration and watching
plugin repository: use new hardware enumeration to obtain devices
cpu plugin: use hardware enumeration
disk plugin: use hardware enumeration
net plugin: use hardware enumeration
spec: add python-udev requirement
plugins: tuning units are handled within plugin classes

This change moves a lot of logic into the plugins, namely
the enumeration, seizing, and releasing of the devices.
However it allows the plugins to control the process in
more detail. This will be also utilised when tuning the
devices, which were dynamically added into the system.

WATCH OUT: only cpu plugin has been updated
daemon: use paths from tuned.consts
disk plugin: migrate to new structure
hardware inventory: implement events subscription
units manager: assign devices in order specified by the plugin
manager, plugin base: control initialization order by plugin
plugin base: add _devices_supported() method
plugin base: split the tunings invocation so it could be run separately
disk: check if device is removable more safely
cpu plugin: fix dynamic tuning, migrate to new plugin interface
disk plugin: use new interface for plugin
monitors base: check for basestring instead of str
plugins base: separate devices assigning
plugins: add base for hotpluggable devices