Various comments added.

Lns 26, 39, 102, 139, 192: Fixed datasource scoping.

Lns 40, 52: Added explicit checks for null and undefined values when
handling text. (We want empty strings to be ignored as falsey values,
as well as zeroes.)

Ln 49~54: Factored out modifiedContextObj.data[dataPathArray[i]]

Ln 86: Coercing null values into empty string.

Ln 152: Don't want to append null children (IE doesn't do defensive
coding)

Ln 197: I forgot there's no "array" type in javascript. Falling back to
feature checking for arrayish values.