Stub in IO request queue and fix some other thread issues

- There was a bug where store buffer wasn't suspending thread when
it was full. It would get rolled back and keep trying. Added logic
to suspend.
- This exposed a bug where the fact that a thread was waiting
wouldn't be registered when a synchronized store was performed.
- Previously, dcache_data stage would suspend thread and a cycle
later, the thread would be rolled back. Store buffer now suspends
in the second cycle.  To make this consistent, made all suspends
triggered from writeback stage.
- Added a bunch of assertions to cache bugs