[i2c] Tx stretching re-organization.
[i2c] Tx stretching re-organization.

There are 2 main changes in this commit:

1. Similar to the previous commit, re-organize the TX stretching to happen
   only when data is about to be sent and not after data is sent.

   The differences are minor, but it allows us to simplify the normal operating
   case and the start case by serializing through the same state (TransmitWait).
   This state simply checks to see if there the transmit conditions have been
   met and transitions to clock stretching if it has not.  This also allows us
   to stop using the depth and wvalid checks to see if data is available.

2. Add a TransmitSetup state after StretchTxEmpty. Without this state, when
   clock stretching is released, the external system usually begins to pull the
   clock up immediately (since we have likely far exceeded the hosts original
   rise point).  Without creating an artificial window for setup time, there may
   not be sufficient time between when the data is changed and when it is expected
   to be sampled.

Signed-off-by: Timothy Chen <d7b2ae30d8c0f215facd721941273067fd1d14a2@google.com>

lowRISC/opentitan,lowRISC/opentitan,lowRISC/opentitan,lowRISC/opentitan,lowRISC/opentitan,lowRISC/opentitan