Initial changes to have Halide only infer implicit arguments when requested.

Previously, Halide would infer extra arguments werever the ended up
being needed. This is convenient but turns out to cause a lot of very
difficult to track down compilation errors. This commit makes it so
inferrence only happens when a placeholder ('_') appears in an
argument list or where a Func is used with *no* argument list at
all.

E.g. where:
    f() = g() + h();
used to be valid for any number of arguments to g and h, now one must write:
    f(_) = g(_) + h(_);
to get the same behavior. (The former style now gives a warning and will
ultimately become an error. See HALIDE_WARNINGS_FOR_OLD_IMPLICITS macro.)

The placeholder does not have to appear at the end of an argument list.
E.g. the following:
    f(_, c) = in(_, 0) * c_red + in(_, 1) * c_green + in(_, 2) * c_blue;
is a dot product across an RGB image for an arbitrary number of
dimensions, so long as the last one is the channels dimension

If there is no argument list at all, e.g. the empty parentheses do not
appear, argument inference will occur, as it did previously. That is
an unadorned "f" is equivalent to "f(_)" rather than "f()".

Implicit arguments now have names of the form "_0", "_1", etc. Before
these were "iv.0", "iv.1", etc. The first ten are predeclared in Var.h
to allow use in scheduling, though there may be some danger in this
because if they are used in user written code, errors will occur
because names of this form are treated specially during compilation.

This should be ready for evaluation. I am planning to work on giving
inferred arguments the variable names used in the code instead of the
synthetic ones (_0, etc.) in situations where the all uses of an
inferred argument are in Func call slots that have the same formal
parameter name.
Changes per code review comments from Andrew.

Update to unadorned Func style for a arguments implicit in tests.

Remove buffer_t * cast operator from Inafge<T> class as it conflicted
with Expr cast operator.

Update tracing_stack test to work on most UNIX platforms.
Added some casts to keep gcc happy.
Merge branch 'argument_inference'
Fixed implicit var usage in apps.