There are two parts to this change:
1) Sequences and arrays are now distinguishable from all non-callback interfaces.
2) To handle that change, overload resolution first tries to convert to the exact
interface, and only if that fails tries to convert things with indexed properties
to sequences or arrays.
This part changes the signatures for various finalization API to take
not JSContext* but rather either JSFreeOp structure or its
library-private counterpart FreeOp. These structures wrap parameters
that are passed to the finalizers removing most of explicit dependencies
on JSContext in the finalization code.