Perform simplification for floor/ceil/round/trunc

- constant folding
- simplify repeated application of integer-valued functions
Correctly handle vector types for builtins and div
Explicitly truncate when doing float->int casts in GLSL

This is for cases where both values are represented using "float"
variables. For example, for uint8->float casts, we can optimize away the cast,
but for float->uint8 casts, we have to perform an explicit truncation because
both types are mapped to "float" in GLSL.
Make GLSL version of lerp (more) compatible with CPU implementation
Fix unit test
Add more unit tests for GLSL codegen and math functions
Fix unit test
Add explicit let statements for the value of the unsplit vars.
Fix bounds computed for split reduction domains.

(bug #464)
Skip adding bounds inference lets at loop levels with no pipelines.

Saves compile time in theory, and makes the IR easier to read.
Add more tests.
Merge branch 'master' into split_rvar_bounds
Merge branch 'master' into split_rvar_bounds
Comment cleanups.
Removed transpose of the DFT domain, tweaked schedules for a slight optimization.
Fixed some benchmarking inconsistent behavior.
Made input to the c2c benchmark complex, benchmarks assume cached input/output.
Slightly reduced redundant code in benchmarks.
Removed unused helper function.
Merge pull request #504 from halide/fft-improvements

FFT benchmark improvements