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.