Allow subscripting Dat with index 0

This yields self, as would a MixedDat with one component.
Add warning to JITModule docs about hanging on to objects
Fix memory leak in JITModule on all backends

The JITModule is cached and therefore should not hold references to any
objects we might want to be garbage collected.  In particular, this
means it shouldn't hold on to the Args (since they hold references to
Dats and so forth) or, in the case of device backends, the ParLoop
itself.  To fix this, blow these slots away after use.
Blow away all unused slots in JITModules

Rather than just the args and parloop remove everything, to minimise
the number of uncollectable objects.
Merge pull request #346 from OP2/fix/memory_leak

Don't hang on to data objects in JITModules after we've finished
generating code.
Some extra @modifies directives
Fix copy on write for MixedDat