(PE-684) Make simulated agent runs bail after a failed request

Prior to this commit, if a simulation encountered
an error for an HTTP request, it would ignore it
and continue on with the rest of the usual series
of requests for that agent run.  This does not
match real-world behavior, where after an agent
encountered its first failed request, it would
fail and not issue any subsequent requests (except
for the final report request).  This commit changes
our simulation runner so that each simulated agent
run will abort upon encountering a failed request.

It does not (yet) account for the fact that the
real agents would still try to send up the
report indicating their failure; hopefully
we can address that in a future commit.