Use Protocol for Quart-Trio static type checking compatibility
As suggested in quart-trio!6 (comment 461432384), this provide the common base as a Protocol to make type checking on applications built on top of Quart-Trio easier. If accepted, this will be followed up by another MR in Quart-Trio.
The introduced protocols are TestAppProto (For Lack of a Better Name) and Event. While the former is previously discussed, the Event protocol will allow trio.Event to be used directly without the wrapper (which is currently missing
is_set and thus streaming request body is broken). I'm wondering though, if TrioASGILifespan can inherit on ASGILifespan or we should make a protocol for the two+ as well.