Add a reorder queue to the processor testbench to fix cosimulation issues

The fact that instructions don't retire in the order they are issued made
it hard to line up events between the Verilog simulation and the functional
simulator.  The Verilog testbench now ensures instructions are logged in the
order they are issued by implementing a simple reorder buffer.