Document OpenCL runtime module test command
Additional blur tests in the legacy branch
Legacy bilateral grid reference parallelization
Import libcgt needed for CUDABilateralGrid

Archiving reference apps.
Ignores in apps
Merge branch 'master' of github.com:halide/Halide
Promote C++ compiler to root

This commit promotes the C++ compiler rewrite, which had been living
under the `cpp/` subdirectory, to the top level of the repository,
replacing everything from the original OCaml version.
Removed some legacy junk

I think Halide_H was a mistake - something equivalent exists within msvc

TODO is out of date and its purpose is better served by the github
issues tracker
Added llvm and cpp folders to gitignore

To prevent irritating people who leave such things lying
around post-code move (me).
Removed more old files (that were hidden)
Now frees memory earlier

Allocate nodes no longer free at the end of their body, but must
contain a Free node inside their body somewhere. This is checked
at codegen time, and valgrind seems happy.

No real performance differences (or peak memory differences really,
for the apps we have). In theory, for long pipelines with not much
lookback, this could save a lot of memory.
Makefile change to more reliably find the right llvm include dir
Now create IR nodes via a static ::make method instead of new

Pros:

No longer doing asserts in a constructor.
  Args are checked before memory is allocated.

Lets us return existing objects instead of creating new ones.
  E.g. to do things like cache small integers, or do eager
  constant folding. Nothing along these lines implemented yet.

Make methods can delegate to other make methods, reducing code duplication.
  Delegating constructors don't exist is C++ < 11.

Removes implicit casts caused by constructors that took one arg.
  The alternative would have been marking those constructors as explicit.

::make returns const pointers, new doesn't.
  Stops people from invalidating the internals post-construction

Cons:

Default constructor now exists and is public.
  We could make it private if it becomes a source of bugs, but I think
  it's nice to have an escape hatch if you want to construct an IR node
  in an unusual way. All IR node members (e.g. Expr) have safe default
  constructors anyway, so all the new default constructors are safe.
IR node make methods now return Stmt and Expr instead of pointers

All uses of them cast them to Stmt or Expr immediately anyway, and
this lets us do more interesting eager simplification.

E.g:
Add::make(foo, 0) can return foo, which is possibly not an Add node.

TBD to what extent this is a good idea, as it could just slow things
down with the extra checks. However, this change (or the previous one)
does not seem to affect compile times at all.
ptx backend memory leak fixes

Now cleans up the cuda module, events, and context when the
JITCompiledModule dies. There was also a bug with CodeGen_PTX_Dev
always creating a module but only setting owns_module when it hits
a ptx kernel.

Valgrind now reports 0 bytes definitely or indirectly lost, but there
are still a number of "possibly lost" blocks in libcuda.