Clarify JsPrettyNamer algorithm (take 2)

Introduced a changeNames() method to clarify the dataflow between
parent and child during recursion. Also, changed the return type of
JsScope.getAllNames() for convenience. Added tests for duplicate
detection in the same scope or a child scope.

(This is in preparation for adding a way to reduce the number of
globals.)

Change-Id: I5b60aff596f034df5fcc4294024b67713fc53a29
Fixes broken -XenableClosureCompiler after closure update.

Change-Id: I391465486270074571cbd08cd869a1aa799fe52e
Let IE10 use the standard XML parser impl

Change-Id: I2a487f7589b1aafe29912c0c299ebcd79397c925
Let IE8+ use StringBufferImplAppend

fixes issue 8380

Change-Id: Iff8b9fac7e9f5a9dcd4e19e46e6d3add77e95ba8
Fixed ValueChangeEvent firing in ValueBoxBase with empty string

bug: issue 7260
Change-Id: I550ab21104adac691b56467851e38cab0099fb3d
Override clone for LinkedHashSet and LinkedHashMap.

Bug: issue 7159
Change-Id: Iab828dcecd6fee643fb9e7e02d86e4fa98bf91b1
Added new illegal names to avoid for obfuscated mode.

Added top level names found in Chrome 30, Firefox 25
and Safari 7.0 not previously accounted for.

Change-Id: I424a3e242ab94a7977ef8ec87f2d3b0588e23e07
merge from master
change rebind comments