optimize function scoping
previously, the entire value hash was simply pushed on a stack upon entering a custom function. the problem with that was that setting the function's argument already detached (i.e., copied) the entire hash. so instead store only actually modified values in nested scopes and let lookups cascade to parent scopes. improvement: 2% for qt, 15% for creator ...