use MonoTime/Duration instead of clock() for higher precision when profiling the GC

also fixes building with PRINTF_TO_FILE
> Am I right that this fixes a bug in the profile display (namely pauseTime was incorrect)? 

Depends on what "pause time" is supposed to mean. It was "time spent during garbage collection", it now is "time the world is stopped". The latter is propably slightly more interesting for a multi-threaded app. The full time is also written in the line before anyway. (BTW: the last line is extracted by benchmark/runbench.d to show as a summary)

> Is there a reason to have the time saved to a variable, or is it just because that's how it was before?

If you need to split long lines anyway I prefer assigning an intermediate to a local variable instead. It's usually more self-explaining without extra line count.