Element chaining

This patch enables to pass also functions to elements() call. When the object that should be resolved as an element is callable, then it is called like elements(o()). This makes possible to chain functions that depend on some parent element without worrying about some of them being stale because all the element chain will be resolved on each call.
fix vm analysis by renaming fixture

#764 introduced cfme/fixtures/vm_name.py which was stepping on
a local version of vm_name fixture and breaking the tests, this
will get it working once again until we port it to the cfme
folder
Clean up Vm
Vm cleanup code
Ensure riggerlib version
Merge pull request #804 from psav/artifactor

Ensure riggerlib version
Merge pull request #798 from sshveta/cleanupvm

Cleanupvm
provider script sorts list

This has been bugging me for a long, long time.
Merge pull request #805 from seandst/sorted_provider_lists

provider script sorts list
Merge pull request #802 from dajohnso/fix_vm_analysis

fix vm analysis by renaming fixture
Merge pull request #795 from mfalesni/chain_element_func

[Proposal] Element chaining
Initial copypasta from xdist
LINT. DEAR GOD SO MUCH LINT.
Remove randomness from collected test nodeids
Runtime config overrides & related tests
TerminalReporter wrapper that (sorta) works before pytest creates the plugin
"Sublogger" adapter, to easily prepend log messages with a common string
Parallelizer needs to be a package, so we can stash remote somewhere
Parallelized testing framework

Based on pytest-xdist. xdist needed some modifications, which will
eventually be submitted as a pull request there so we can nuke
most of this and use xdist instead.

Specify multiple appliances via multiple --appliance command-line options,
passing a different base_url to each. The test suite modules will be split
among the child processes (and thus appliances) by test module.