New Pipeline: begrudgingly tolerate a few reentrant runs

Ideally, later pipeline components would never invalidate earlier ones,
and as such, we fatally assert that invalidations aren't going
"backwards" to earlier stages.

Unfortunately, we have at least one bug left that trips that assertion.
t's rare (I think you have to get a notification with remote input,
activate the remote input from the lockscreen, get the keyguard prompt
to unlock your device, and then dismiss (or have the app dismiss?) the
notification while still on the keyguard screen), but it still happens.

Therefore, modify ShadeListBuilder to complain loudly (Log.e) on
reentrant runs, but to tolerate a few (currently three) in a row without
crashing. More than that will crash as before, and the count will reset
on any non-reentrant run.

Bug: 231388160
Test: atest ShadeListBuilderTest # new test cases added
Change-Id: If944b9c1f13206a9ccba7a5b22fc4d0f96dc1eae
2 files changed