python: Allow additional backends

This adds the boilerplate code required to make multiple backends
actually work, a backend option and a helper to facilitate getting the
requested backend.

Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
results.py: Rename JSONWriter to JSONBackend

It's a mostly private class, so renaming it has very little public
effect, and it makes it clearer what the class is.

Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
framwork: Add basic support for a JUnit Backend

This adds a very basic JUnit backend, but doesn't hook it up. It
currently passes all of its tests, but we still need to know that
jenkins will consume said xml.

This needs to have some refactoring done in profile to make it work
correctly, (although I would be comfortable for now pushing with the
known broken behavior if Jenkins will accept it), because JUnit expects
to be given the number of tests for the initial metadata block, but we
have no way to calculate that number until after the run has started.
This is because of the flattening pass in profile, so removing that pass
or pushing it back to the profile modules is necissary.

This also adds the jenkins xsd, Jenkins is a GPL or LGPL project, so
that needs to be looked into.

FIXME: This fixes a tset that was broken in the previous patch,
FIXME: this adds a decorator to a test that belongs in a different patch