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.

Move the name of the file to the JSONWriter class

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>
framework: Add basic support for a JUnit Backend

This adds a very basic JUnit backend. 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 adds a decorator to a test that belongs in a different patch