model: temporary fix for uninitialized loads
This patch does two things:
(1) Convert 'set_assert()' to 'assert_bug()' to provide:
- More unified bug printing
- Only printing the bug for a feasible prefix
(2) Avoids the work_queue loop if a bug was asserted
Part (1) mostly provides some cosmetic fixes.
Part (2) prevents an ASSERT() from being thrown in future values, since
we don't abort the trace early enough when there's nothing to read from.
This all needs better treatment of uninitialized loads, as there are
some loose ends.