Simplify change reporting to handle errors better

If Zuul runs into an SSH error (or other low level issue) when reporting
change results back to Gerrit it can get itself into a loop where it
will be unable to finish reporting a change due to internal inconsistent
state.

Modify the reporting process to flow in such a way that if errors
outside of zuul's control eventually go away the retry loop for
reporting will succeed and zuul can move on.

Specifically check and flip the 'reported' flag in one place to make the
logical flow of reporting simpler to understand. This has a side effect
of making it possible to retry reporting multiple times and as long as
the network works reporting should succeed.

Change-Id: I2023f472be8ca0b606f680418006d3a6c2239061
Fixes-bug: 1349486