[BUG #1966] allow expression parsing (no 'statement' wrapper)
more on experimental globalsoptimizer

- globalsoptimizer fully coded
- integrated globalsoptimizer into tool chain
- new experimental 'globals' optimization
- abandoned attempt to also optimize built-in globals like 'Array', 'Date', etc.
  (as i need to use the symbols proper, only a small set are truely cross-browser,
  and the effect doesn't seem worth the effort)
moved stringOptimizer() function to stringoptimizer module
based stringoptimizer on treeutil.ensureClosureWrapper

- stringoptimizer and globalsoptimizer now play well together, sharing a single
  closure wrapper for their purposes
- also tentatively disabled stringoptimizer.check(), which blocked string optimization
  in certain occurrences, but seemed superfluous
- shuffled around with <file> and <statements> wrappers around trees
- some reorg in ensureClosureWrapper
- tentatively removed nulling childNode.parent in tree.removeChild; this seems
  somewhat treacherous, because if you e.g. addChild() some existing nodes
  to some other, and then call removeAllChildren() on the previous parent, the
  children that have been added to the other node (and had their .parent been
  updated to the new parent), will get a .parent=None, effectively breaking
  the link to their new parent
minor change