Fix a memory leak

The dev codegen object wasn't deleted
Fix printing the address of the cleanup routine

Apparently function pointers don't get printed as pointers
Tolerate deinitialization errors when releasing ptx module

If you have a static handle on a JITCompiledModule (e.g. via a global
Image or Func), halide_release gets called when the driver is in the
process of shutting down.
strip trailing whitespace
Merge branch 'master' of github.com:halide/Halide
Simplified inf and nan intrinsics.

Somehow I made it to this point in my life without knowing that math.h
defines INFINITY and NAN.
C output includes all the math functions now
Add support for writing out lowered .stmt form of Halide code for
debugging and schedule analysis.
Add a header file for user visible overridable and callable routines
in the Halide runtime. Purpose is two fold: to give prototypes for
overriding and calling these routines and to provide Doxygen
documentation on them.
blur no longer requires HL_DISABLE_BOUNDS_CHECK
Slightly more debugging output in Bounds.cpp
Resoect constraints when defining bounds of the output.
Added ability to query pipelines about bounds inference information.

If you pass in a buffer with a host and dev pointer of NULL, instead of
running the pipeline it will populate that buffer with appropriate sizes,
strides, and mins. It attempts to satisfy both the required region and
also any constraints. It also respects expansion due to vectorization, etc.

It does this by computing the required region, then passing it through the
constraints, and then checking the bounds again. This can be tricky with
recursive constraints. Say you have a constraint that the width must be a
multiple of four. If you want to use this feature, you should express your
constraint like so:

im.set_bounds(0, 0, ((im.extent(0)+3)/4)*4);

Note that passing a required extent through this expression will round it
*up*.

Doing the following:

im.set_bounds(0, 0, (im.extent(0)/4)*4);

will trigger an error during the bounds inference phase, because it will
compute the required extent, round it down to the nearest multiple of four,
and then do the bounds check again. Constraining things to be constants,
which is the common case, will work fine (and will check those constants
against the required regions for you).

In some cases the inference routine will give you results that won't pass
the constraints (or the bounds tests), and it also won't throw an error until
runtime. For example:

im1.set_bounds(0, 0, im2.extent(0));
im2.set_bounds(0, 0, im1.extent(1));

If you're doing simultaneous bounds inference for im1 and im2, this will
set the width of im1 to the required width of im2, and the width of im2
to the required height of im1. The width of im1 and im2 probably no longer
match after this, so the first constraint will fail when you run the pipeline.

Solving this problem in the general case requires solving arbitrary systems of
nonlinear equations (or statically proving that there is no solution). You
can, for example, encode a constraint that provides a counter-example to
Fermat's last theorem. Bounds inference isn't going to disprove Fermat's last
theorem for you by finding a solution. It's not even going to try.
Merge branch 'master' of github.com:halide/Halide
Merging branch master of halide/Halide