Trunc

Please refer to the commit messages for more details; this turned out to be more tricky than I expected.

Two general points:
- I think this should be enough to enable the test in correctness/math.cpp for round on Windows, but I have no way to test this.
- Do I have to do anything else to guarantee clean vectorization of trunc or does LLVM take care of this?

ptal
I assume this change is to match the behavior of posix roundf.

It appears to round towards zero. Is this the definition of round we want to use? I ask because it's not the division rounding behavior we use (we use round down always). Is round often used in sampling code where the rounding direction would matter?