Move the merger to a JSON-compatible API

In order to split out the merger as a new component, remove any
direct Zuul model object manipulation, instead passing in a
lists of dictionaries for merge instructions.  Change the merger
algorithm so that it is compatible with this new method and makes
no assumptions about whether it has merged any changes previously.

There is likely to be a minor performance impact as some information
which was previously kept in-memory will now be fetched from the git
index.

The merger is also no-longer pre-populated with clones of git repos
at startup.  Some tests were adjusted to accomodate this.

Change-Id: I3df86ae36b4969d568d1fb03df1e6569553d1226
3 files changed