Add repo scm

Add support for 'repo' plugin from Android development. Ensure
only settings that actually are required are written out to
the produced XML, and all optional settings aren't included
unless explicitly set.

Change-Id: I662bdd4d348ce7ec7d213e5d7149daf130fda697
Add optional option to copyartifact plugin

Simply add the optional option to the copyartifact plugin that was
missing. It comes with a small pieces of doc and related tiny
relevant sample.

Change-Id: Ib74932bd9e0a988b826547badd02c8a1c67ae138
Closes-Bug: #1236909
Merge "Add repo scm"
Merge "Add optional option to copyartifact plugin"
missing parameter error are no more meaningfull

When ever we attempt to format a string and are missing some parameter,
we end up with:

    <stacktrace>
    KeyError: 'ext-name'

Which is not that helpful.  This patch dump the string being formatted
and the list of parameters provided to deep_format().  Example output:

    JenkinsJobsException: ext-name parameter missing to format ext/{ext-name}
    Given: {'jobs': ['{name}-ruby1.9.3lint', '{name}-browsertests'],
    'name': 'mwext-UniversalLanguageSelector'}

Which in most occasion should be self explaining.

Note the KeyError is reraised as a generic Exception since the format is
meant for human and is no more representing the key.

Change-Id: I46fced45c4586fca8ea999766327b7b4b2dc6505
Merge "missing parameter error are no more meaningfull"