Delay initialization of local repos

Now that live reconfiguration is an option, we sometimes load the
Zuul config before the remote repo is created.  To handle that,
gracefully handle that case when the Repo object is created by the
Merger.  Keep track of whether the initial clone has happened, and
check for that before every local Repo operation.  If we get an
event that involves a repo before it exists (unlikely!) that will
still error and raise an exception (that should be caught higher
up in the stack).

Add a test for this case.

In the test suite, when adding a fake change to the upstream repo,
always reset it so that HEAD is master so that new repos clone
from a consistent state.

Also remove an errant assertEmptyQueues because it's handled by
assertFinalState.

Change-Id: Ic6eec83e3faa2a15be4b23d4cfcfbddcac82983c
Merge "Delay initialization of local repos"