Bug 877281 part 1.  Convert WebIDL bindings to using something CallArgs-like.  r=peterv,jandem
Bug 877281 part 2.  Eliminate uses of ${valPtr} in bindings conversions.  r=peterv
Bug 877281 part 3.  Rename valMutableHandle to mutableVal.  r=peterv
Bug 877281 part 4.  Eliminate uses of ${valHandle} in binding conversions and make ${val} be a handle.  r=peterv
Bug 877281 part 5.  Add a set() method to Rooted.  r=terrence
Bug 877281 part 6.  Replace ${jsvalPtr} with a MutableHandle ${jsvalHandle}.  r=peterv

It's a little unfortunate that we need both ${jsvalHandle} and
${jsvalRef}, but the only other option is to consistently have a
MutableHandle in this code.  If the thing we have to work with is a
Rooted, that means doing JS::MutableHandle<JS::Value>(&myRooted) as
the thing to substitute for ${jsvalHandle}.  Just using "&myRooted"
doesn't work, because things like "&myRooted.set()" or
"&myRooted.address()" fail, even if parenthesized as
"(&myRooted).set()", because &myRooted is actually a Rooted*, not a
MutableHandle.

We could go the JS::MutableHandle<JS::Value>(&myRooted) route if
desired; it would primarily uglify dictionary and sequence to-js
conversions.  With the setup in this patch, ideally it looks pretty
idiomatic except for the use of .set() instead of operator= on Rooted.
Bug 872669.  Slightly speed up our named proxy gets by making use of the inline chars/length getters we can have when our id is an atom.  r=waldo,peterv
Bug 879628.  Don't screw up the text from earlier counters when using counters() with various list styles.  r=dbaron