Added access to the stride of image params

Useful for making static promises about the stride
Made floating point abs call library functions

Instead of doing compare and select
Default to 2 threads on 32-bit systems
Better handling of floating point min and max on arm
Merge branch 'master' of github.com:halide/Halide
Moved is_const_power_of_two into IROperator
Made the cache actually do something in CodeGen_C
Extern declarations for tracing functions in CodeGen_C
Better handling of let statements, div, and mod in Codegen_C.

Also fixed a large bug in substitute - it was descending
inside statements and expressions that clobbered the name
Give llvm more metadata about loads and stores

To help with alias analysis.
Use substitute instead of let statements in unrolling and inlining

Peephole optimization can't see through let statements, and it was
failing to simplify some things. In theory, substitutions risk code
explosion. This doesn't happen immediately, as the IR node you
inject is still one object in memory. After a few passes though, these
tend to get uniquified.

We may have to revert this and do better peephole optimizations through
let statements if this explodes.
Realize enough to cover all writes to a buffer, instead of all accesses

I believe we already prove that we don't access where we don't write.
This produces simpler IR.
One more simplification pass.

I was seeing trivial let statements survive until the end.
Fixed the build for llvm 3.2
py bindings -- add some cross-testing resolution stuff
py bindings -- fix bugs of prev commit
Log compiled function pointer address when HL_DEBUG_CODEGEN is 1 or
greater. Useful for debugging JIT codegen issues in gdb.
Track change in llvm trunk to pass Attribute::AttrKind instead of
Attribute to addAttribute call.
Assert that pure function definition and reduction function definition
have same type. Without this check, it is possible to write outside of
an allocated buffer's extent because the allocation is made based on
the pure definition's type and the update code uses the type of its
expression.
Add error checking for passing too many arguments to a Halide
function. Caused a segmentation violation previously.

Add support to the test infrastructure for error message tests. Allows
writing tests that should result in a compile time failure and
verifying one does occur as opposed to the code being accepted or
crashing.