Reducing the exposure of JavaScriptObject from Function, Closure, etc.

At the same time, Promise and Deferred interfaces now have reduced
exposure to JavaScriptObject interface. Got it working for now, but
still need to review the design to see if this is what I want. In
particular, I should review how Promise._then is evaluated so that we
can decide whether the Invoker should take apart JsArray (if the caller
decides to send a JsArray), or, treat JsArray as a single object.