Update typeinference.js.

1. Remove the type 'ParallelArray'.
2. Update method names.
3. Extra parameters are added to the type environment and data flow.
Update rangeanalysis.js.

1. Remove the type 'ParallelArray'.
2. Update method names.
3. Extra parameters are added to the range environment.
Update typeinference.js.

1. 'buildPar' is removed from this implementation because it involves binary data.
2. 'this' should not be added to the type environment because it does not refer to the source itself.
Update inferblockflow.js.

Remove obsolete code for ParallelArray like 'RiverTrailUtils' and 'FLATTEN'.
Update infermem.js.

Remove obsolete code for ParallelArray like 'RiverTrailUtils', 'FLATTEN', 'NEW', etc.
treat 'this' as unimplemented in type inference.

When we are in jslib, there's no way to know what 'this' refers to in the context of the caller. For example, let's say that 'arr.mapPar(function (x) {return this;})' is called in function 'Obj.f()'. In function 'mapPar', 'this' refers to 'arr', while in function 'f', 'this' refers to 'Obj'. Therefore, 'eval(this)' in jslib doesn't solve our problem.
Treat 'this' as unimplemented in range analysis.

See the previous commit for more details.
Treat 'this' as unimplemented in block flow inference.

See the previous commit for more details.
Treat 'this' as unimplemented in memory allocation.

See the previous commit for more details.
The top level kernel function does not have extra formal parameters in its header.
The offset property in a ParallelArray object is no longer considered.

This is one of a series of patches which aim to abandon all ParallelArray-related code in genOCL.js.
Update the generation of formal relative arguments.
'_writeoffset' is not used in a called function, so just remove it.
Remove the boilerplate used in the code generation stage.

This commit works as an attempt to drop the deprecated support for the keyword 'this'. There will be few entries left in the boilerplate when the work is finished, so I decide to remove the boilerplate thoroughly.
Change the top level interface for kernel generation.

Tentatively, only the AST and the construct are passed as arguments. I think that's enough to generate various offsets and then emit valid OpenCL snippets.
Update the skeleton of the generated kernel.

1. 'this' pointer is removed. The start of the source array is pointed by '_source' now.
2. The task id is assumed to be a scalar. Thus the calculation of '_writeoffset' and '_readoffset' get simplified.
Remove dead code.
Fix a bug in generating 'return' statements.

The original code generator will allocate memory in private space for arrays and inline objects returned by the called function, so the caller should view these return values as '__private'. Also, marking these return values as private are in accord with the fact that the memory for the returned array objects is allocated in a nested way, instead of the way for a flat global array. Thus, while generating the return statement in a called scope, the allocated memory for the return value should always be addressed with nested index operators, no matter whether the source is in private space or in global space.
Remove some dead code.
Upper levels of the nested array structure are initialized but there will be no need to initialize the leaves.