Initial multiplex of configuration

2014-05-13:
* Updated descriptions
* Unittests for all introduced modules
* Documentation for all introduced modules (just `make -C docs html` to check it out)
* Suggestions by Ademar and Rudá implemented

This is my idea of initial implementation of test config multiplexing reuses all of the current cartesian_config present in virt-test, with the objective of extending and fixing any perceived weaknesses as we discuss.

People in avocado could either run tests with it the 'normal' way, through a string with urls, or by providing a 'multiplex file', that creates a test matrix and runs the tests defined there. In my commits I have an example of how this would work nicely in sleeptest, and I do want to implement it in more complex tests, if we think this prototype is a good idea moving forward.

    $ cat tests/synctest/synctest.mplx
    variants:
        - synctest:
            sync_tarball = synctest.tar.bz2
            sync_length_type = int
            sync_loop_type = int
            variants:
                - loop_short:
                    sync_loop = 10
                - loop_medium:
                    sync_loop = 50
                - loop_long:
                    sync_loop = 100
            variants:
                - length_short:
                    sync_length = 100
                - length_medium:
                    sync_length = 500
                - length_long:
                    sync_length = 1000

This file generates the following output:

    $ scripts/avocado run --multiplex tests/synctest/synctest.mplx
    DEBUG LOG: /home/lmr/avocado/logs/run-2014-05-13-18.53.37/debug.log
    TOTAL TESTS: 9
    (1/9) synctest.length_short.loop_short:  PASS (3.15 s)
    (2/9) synctest.length_short.loop_medium:  PASS (2.75 s)
    (3/9) synctest.length_short.loop_long:  PASS (2.72 s)
    (4/9) synctest.length_medium.loop_short:  PASS (2.81 s)
    (5/9) synctest.length_medium.loop_medium:  PASS (2.82 s)
    (6/9) synctest.length_medium.loop_long:  PASS (2.82 s)
    (7/9) synctest.length_long.loop_short:  PASS (2.79 s)
    (8/9) synctest.length_long.loop_medium:  PASS (3.49 s)
    (9/9) synctest.length_long.loop_long:  PASS (2.82 s)
    TOTAL PASSED: 9
    TOTAL ERROR: 0
    TOTAL FAILED: 0
    TOTAL SKIPPED: 0
    TOTAL WARNED: 0
    ELAPSED TIME: 26.18 s

On top of that, I added some syntax sugar to access test params, via the accessor `self.params.[param-name]`, and other facilties to reduce the amount of boilerplate code needed to get to the values the test writer wants.