Generate smaller expressions for bounds of x * constant
Bounds inference now goes inside-out

Fixes bugs due to inner bounds that depend on outer bounds.
Simplification rule for clamp(x, y, y)
Catch division and modulo by constant zero in IROperator.h rather
than crashing in Simplify's Mod visitor later.
Some more simplification rules to fix recent performance regressions.
Add code to CodegenArm to force Android to use halide_current_time_usec() rather than performance counter (since the latter isn't available in user mode). Also correct some 64-bit assumptions.
Merge pull request #156 from steven-johnson/master

Make Profiler usable on Android.
Adjusted gpu alloc test to use less memory.

It was sometimes failing during the night.
Permitted sliding window when the extent depends on the loop var.
Refactored IR, and made tracing good.

Remove the PrintStmt IR Node. Added String constants, IfThenElse
blocks, and Evaluate, which evaluates its Expr arg and discards it.

The IfThenElse allowed for removing the maybe_ intrinsics.

Tracing can now dump in a binary format to a file, call a custom
function at runtime, or print ascii to the terminal. It can be enabled
or disabled for each Func with fine granularity.
Merge branch 'master' of github.com:halide/Halide

Conflicts:
	src/CodeGen.cpp
Upgrade clocks to nsec resolution

Replace halide_current_time() and halide_current_time_usec() with
halide_current_time_ns(), which returns time in nanosecond increments.

Add linux_clock.cpp, which uses clock_gettime() instead of
gettimeofday() [and actually provides ns resolution].

Have Android use linux_clock.cpp by default.
Correct usec -> nsec usage in Profiling.cpp and HalideProf.cpp
Add int64 cast for correct multiply results on 32-bit systems
Use linux_clock when __linux__ is defined. Also fix %d -> %lld usage.
Merge pull request #159 from steven-johnson/master

Upgrade clocks to nsec resolution
Merge branch 'master' of github.com:halide/Halide

Conflicts:
	src/Tracing.cpp
	src/runtime/runtime.opencl_host.cpp
	src/runtime/runtime.ptx_host.cpp
Split now pushes evaluations upwards instead of downwards.

Simplifies better.
Added missing space to profiling printf
Made linux_clock do the syscall directly to dodge linking woes.