If HL_DEBUG_CODEGEN >= 3, dump llvm module before optimizations
More aggressively promote indices to 64-bit on 64-bit platforms.

Generates more pointer marching and less leal/cltq
When splitting, instead of rounding up, clamp the base index.

I.e. if you need to evaluate 6 elements vectorized by 4, instead of
computing [0 1 2 3] [4 5 6 7], compute [0 1 2 3] [2 3 4 5].

Instead of buffers needing to be a multiple of the split factor, they
now need to be at least the split factor. If they're less, it expands
the bounds in the downwards direction. I.e. for three elements, the above
would compute elements [-1 0 1 2].

This behavior doesn't trigger (and thus incurs no overhead) if you statically
promise that the bounds are a multiple of the split factor.
Improved vectorize test by promising width == vector size

Otherwise the new bounds clamping mechanism triggers and slows things down
very slightly.
Extract common let statements from unrolled blocks.

Doesn't change performance, but generates less redundant code.
Performance test that verifies that memcpy in Halide is ~= system memcpy
Added test to make sure we can't do pointer arithmetic.
Fixed memcpy test for ptx.
Merge branch 'master' of github.com:halide/Halide
Modified block of letstmt simplification to allow different names.