ptx device launches can now occur within do_par_for

Except it often doesn't work because we don't guard access to
the context, so it gets corrupted when accessed by multiple threads
and complains.

This mostly involved making the Closure used for a parallel for
loop pass through the whole-buffer_t pointers that the ptx backend
expects to live in the symbol table.

Also made the other apps work with ptx.
Better error messages on bad split/rename/parallel calls.

Now we print the offending var, and also print out what the
valid vars are.