more error checking

now verifies operands are integers before add/sub/mult operations
and writes a failure to result if not the case
fix concurrency issue in pids.uqb test program

interpreter and .qbc program were both wrong. that it was working at all
was a surprising fluke
improve qbrt error handling
fix bug referencing invalid registers

programs can no longer reference argument params that are not allocated.
avoids bugs like $0 and %0 pointing to the same register.