fix #158 issue about variable names starting with "null"

closes #160
fix #156 issue with bindings when the bound value becomes empty

closes #161
Removes unnecessary global var access when cpt path is in local scope

Consider the following template:

  <#c.tpl />

Before this commit, the compiler was generating the following code:

var myTpl = require("hsp/rt").template({ctl:[Ctrl,"Ctrl"],ref:"c"}, function(n){
var _c;try {_c=c} catch(e) {};
return [n.cpt([_c,"c","tpl"],0,0,0)];
});

Note the unexpected access to the global c variable, which is
stored in _c in a try...catch block.

As we know the c variable is in the scope in this case, this commit
changes the compiler to generate the following code instead:

var myTpl = require("hsp/rt").template({ctl:[Ctrl,"Ctrl"],ref:"c"}, function(n){
return [n.cpt([null,"c","tpl"],0,0,0)];
});

closes #162
fix #165 invalid propagation of node change in cptcomponent

This commit is similar to 572d5e50dd101535e0a7993e644e061ec1229ac0.

closes #166