Add trunc and fract operators, unify rounding behavior 

This PR improves Halide's built-in rounding functionality

- added trunc() and fract() functions, including vectorized versions on x86
- changed existing round() implementations to use IEEE rounding on ties (round-to-even)
- added unit test that catches common rounding errors