Error on duplicate job names being found

When parsing yaml files, any duplicate macros, job-templates, job-groups
or jobs should be considered an error by default, but provide a config
option for this to be ignored.

Need to check for seen jobs twice, when processing job groups listed
under projects and again the jobs have been generated from templates.
Use a set and store each job name generated and check on the next
iteration.

Finally walk the list of generated jobs and check if any duplicates are
encountered.

Also ensure that if the user wishes for duplicates to be ignored that
the last defined job replaces the earlier one.

Change-Id: Id31ef33ae1b2469f7c3eeabe77420377978fa35e
Merge "Error on duplicate job names being found"