[usb][dwc3] handle two-stage controller/stack race

In the case of a 2-stage USB transfer (having no data-stage), there is a
fundamental race between the controller and usb-peripheral server. This
adds states to account for either the controller, or the fidl server,
winning the race. This ensures the controller will not ACK the
transaction until the side effects of the control directive have
actually taken place.

Bug: b/474648637
Change-Id: Ide5247abb863ab5bc628030be388800436aa6e87
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1504837
Reviewed-by: Braden Kell <bradenkell@google.com>
Commit-Queue: Sam Hansen <hansens@google.com>
2 files changed