Fix a subtle race condition where synchronized stores could appear to succeed when they actually did not.
If a synchronized store occurs in the same cycle that the full entry in the store buffer is cleared, the request will be q
ueued, but sync_store_wait would not be updated to reflect that a store is pending. When the response comes in subsequentl
y, the success value would not be recorded.  If it happened that it was unsuccessful, it would think the store succeeded w
hen it actually did not.
Also cleaned up: store_finish_strands and l2_ack_oh were essentially the same signal, just computed in different spots.  Merge them.