Component Isolation (server infrastructure)

This is the first part of the so called "Component Isolation" functionality.

The idea of this functionality is to let us easily pinpoint  the component that most likely caused a regression by keeping a record of the complete test environment and comparing with previous test records.

The pieces here are the bare minimum necessary to record the keep the software component information and process it accordingly.

A lot of code on other different layers will complement these changes. I decided to break this into a smaller chunk so that it's easier to digest, review and test.

For instance, the autotest client will try to detect the currently running distro, and code on `virt-test` installe classes will automatically record software built and installed.

Feedback is extremely welcome!