Use yaml local tags to support including files

Add support for local tags which are application specific to allow
including of other yaml files or code from scripts. Allows for code to
be maintained and tested as seperate files, as well as reduces
duplication of yaml code that cannot be macro'ed or easily templated by
including it from a common file.

Adds support for the following tags:
  'include' - load file as yaml code
  'include-raw' - load file as data (for scripts)
  'include-raw-escaped' - load file as data with escaping braces '{}'
      as default for use with job-templates

Use configuration file options to provide a search path for the files.

Inspired by
http://stackoverflow.com/questions/528281/how-can-i-include-an-yaml-file-inside-another

Provide two sets of unit tests:
  - Test behaviour of yaml tags independent of any XML generation
      by comparing json result of yaml parsing to verify that certain
      tags do/don't recall the yaml.load() method.
  - Use YamlParser class to provide example usage of the include
      tags which result in XML output.

Requires use of PyXML to provide a consistent XML output that can be
reformatted in a predictable manner across multiple versions of python.

Change-Id: Ib90a07043112d4739d6529ceddbc9817668bcec0
Added config options to not overwrite jobs desc

When you do not specify any description for a job, right now it creates a
new one overwriting whatever you had put there manually. Now when
setting the configuration option 'keep_descriptions' to True, it will
only overwrite the description if you specified one explicitly in the
yaml.
That way you can avoid specifying any description and it will not
overwrite the ones you put there manually through the jenkins ui.

Change-Id: I408f5ee06a6939a8cb8f4f2e6c6e0d060462259c
Signed-off-by: David Caro <dcaroest@redhat.com>
Added matrix trigger option to email-ext publisher

Change-Id: I86655a2f4dac6c05c7ea28f12c23ca3b1153334b
Signed-off-by: David Caro <dcaroest@redhat.com>