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
Yes, it's supposed to match the behavior of roundf, i.e., round to nearest integer with ties rounded away from zero; that's also the behavior of the LLVM round intrinsic. 

But now that I think about it, maybe round-to-even on ties is the better default for Halide:
- it's what IEEE754 mandates
- it's what we currently use for vectorized SSE/AVX anyway
- it's probably fastest (hardware support)

This would require us to use nearbyint instead of round on posix, and I would have to update the Windows implementation.

Any opinions whether we should do this?

(Btw., for sampling code you are probably much better off using floor/ceil instead of round anyway.)