Bug 887558 (part 1) - Introduce ProxyObject and some sub-classes.  r=jorendorff.

--HG--
extra : rebase_source : 33ed2aff35acbe4de8891a9fb34c60e7a314d9c8
Bug 887558 (part 2) - Move various functions into ProxyObject and FunctionProxyObject.  r=jorendorff.

--HG--
extra : rebase_source : 14402b9ab7eda3389eb1b812ee961e46067b5b1d
Bug 887558 (part 3) - Use JSObject::{is,as} for JSObject itself.  r=sfink.

--HG--
extra : rebase_source : 510677697603e6502c738f5460b7bea4bffd7f27