FakeAppInstancesRepo should be easier to use

The behavior before was that each time you called GetInstances, it would slice off
one of the responses and errors from its slick of mock responses. Eventually there
would be nothing left and it would just return you the zero-value for the
response and error, which made it fairly difficult to use this in practice
because we poll this repo over and over again in practice.
Fix a source of flakiness in start_test.go

The problem here was that we made it possible for the error returned by the api
to be ignored if the staging timeout is set to an incredibly short duration.

Moving the error check outside of the forloop is just crazy enough to work.

[Finishes #71778246]