Compile variants with debug symbols in a chroot

In order for gdb to find debugging symbols correctly, tup's chroot
feature has to be used. Unfortunately, this really slows down
compilation, so only turn it on for debug builds.
Go through proper sim_terminate path on error

Nothing really necessitates this yet, but it's probably more correct.
This does further motivate adding timeouts to the joins, but there's not
anything in native pthreads for that so... we'll let it go.
Print loose approximation of simulator speed

It's nice to have a mental ballpark figure of simulator performance, so
we now print the "average simulated frequency" on exit. This is a really
rough number, it's simply (cycle count / execution time).

The syscall / context switch overhead of the current speed limiting code
causes the simulator to be consistently slower than the requested speed.
While this isn't really surprising to see, it's nice to see that problem
validated with real numbers. I'll have to look into how other emulators
achieve tighter timing at some point in the future --- I'm guessing they
either do something adaptive, or a simpler would be to track sum of
execution time, shoot for an average, and consistently undershoot the
sleep call, that would more or less work things out.
Main thread tick/tock needs to happen in advance

Otherwise the no_pipeline case will double-tick without a tock,
dropping the branch-to-self check
Add a warning/note to fix no_pipeline replay bug
Fix pipeline flush in NO_PIPELINE case

This was going through the pipelined case before, which added
sem_post|wait loops that weren't actually needed. Add a case for
NO_PIPELINE that calls the flush handlers directly.

This is a drastic improvement in performance, 373-fast-nopipeline fib
speed jumped from ~850 khz to 2.4 mhz on my 2.7 ghz core i7 macbook