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
index on master: bf135f8 Merge pull request #502 from halide/split_rvar_bounds
On master: isnan
Fix bug where tracing interfered with bounds inference.
Added assertion
Fix several smaller issues
Merge pull request #497 from halide/floor_ceil_optimization

Perform simplification for floor/ceil/round/trunc
Merge pull request #498 from halide/better_glsl_vectorization

Improve codegen for GLSL
Build fix.
Added a case to deinterleave that works when transposing fixed sized blocks of data. In this case we can safely interleave if the collected stores have unit stride, and each store is simply a load with a stride equal to the vector width. Adding this case makes this optimization a little easier to trigger when doing a simple transpose.
WIP on a generator that uses nested extern stages
Fix minor bug in CSE.

Use counts are not transitive. E.g in (x*x + 1) + (x*x + 1), (x*x + 1) is
used twice, x*x is used once (not twice), because once we pull x*x + 1 into
a let, there will only be one x*x.

But use counts should be transitive for exprs we're not going to
extract as a let! E.g, in the above example, if we're not going to pull
x*x + 1 out as a let, then we should treat x*x as having a use count of 2!

So I've separate the use_count tracking from the global numbering, and made
exprs for which should_extract = false transitively increment the use_counts
of their children.
Clarify row-major vs column major in tutorials.
Fixed bug preventing gpu_tile from being used on a mix of Var and RVar.