Provide file locations of config syntax errors

Yaml parse errors come with nice pointers for the line and column
in the file where the error occurred.  Provide the same for
Zuul configuration language syntax errors.

This adds a yaml.Mark object (which points to a file location) to
each top-level zuul configuration object.  We could add it to every
dictionary we parse, but at the moment, that seems excessive.

This uses the same mechanism to add the already existing zuul
source context to the same objects, and retires the previous method.

The new error message looks like:

----
Zuul encountered a syntax error while parsing its configuration in the
repo org/project on branch master.  The error was:

  extra keys not allowed @ data['foo']

The error appears in a job stanza with the content:

  {'foo': 'error', 'name': 'project-test2'}

  in "org/project/.zuul.yaml@master", line 2, column 3:
    - job:
      ^
----

Change-Id: Iea496a9dca6d4cef51854afc5d3e042b3b99411a
3 files changed