Fixed bug in context.gc() where the reference was not passed back.
Started down the path of making changes for the current spidermonkey 1.8.5 release.
Lots yet to do.
First round of changes.  Compiles cleanly at this point, but doesn't run.
- Added --prebuilt-library switch to setup.py so that a downloaded version of spidermonkey can be used easily.
- Added new calling sequences with jsid instead of jsval
- Temporarily removed checks for JS_THREADSAFE, but a lot has changed in 1.8.5 that requires review
- Changed malloc() to calloc() to assure that undocumented structure members are initialized to zero.
- Eliminated internal "js_" calls and replaced with new "JS_" API equivalents.
- Fixed notorious memory corruption bug (malloc length incorrect in pyobject.c)
- Deprecated old embedded libjs build and removed old libjs code.
- Added ability to add finalize functions to general hashobj wrappers to handle synchronization of tasks between js and python
- make_object now NEVER returns an object which is not of the requested type.   There was erroneous code which unwrapped existing py objects which were causing memory overwrites with certain types of return values.
- Added unwrap_pyobject() to handle cases where we want to unwrap rather than double-wrap python objects passed back from js
- Still some bugs in iterators.
- Still some problems with old memory and runtime checks do to the Operation Callbacks change in 1.8.5.
- Fixed checks for void pid to use JSID_IS_VOID
- Fixed bug in iterators which referred to the wrong
  object in the new JSNative calling sequence.
- Fixed extraneous Py_DECREF of python context object which could
  segfault randomly.
- Fixed jsval references to use macros properly. It's likely there were
  some bugs hiding since the comparisons made using previous API techniques
  were no longer valid.
- Global object is now managed via a weakref to eliminate reference cycles internally
  when wrapped objects get assigned to global storage.  This means it is the responsibility
  of the owner of the context to make sure the global object is not deleted, but in the case it is
  the library will simply failsafe by no longer supporting globals for access or modification.
- Changed StopIteration exception to use 1.8.5 library call.
- Fixed reference counting problems with iterators.
Weakref-capable globals are now recognized and treated specially.
Otherwise, the global object is kept as a reference and may cause leaks
if populated with wrapped python objects.
Fixed a bug which prevented raising exceptions within the access check routine.
Now, you can either return "False" or raise an exception to indicate an access check failure.
Added context.compile() and compiled objects.
Fixed bug which caused Javascript compilation errors to be reported incorrectly as
"unknown script error" exceptions.
Added additional error reporting, including user error callback for warnings,
as well as richer syntax information attached to the JSError exception object.
Fixed bug which caused segfault if arguments to .compile() or .execute() were incorrect.
Removed outdated reference to ez_setup.py
- Implemented workaround for Python/nose atexit "NoneType" error
- Reapplied change which allows exceptions to be passed upward from
  Context_has_access()
- Changed octal syntax error test to hexadecimal (ECMA change to js
  behavior)
- Added context.detach_from_thread() and context.attach_to_thread()
- Enhanced error reporting to include file/line number in more
  circumstances.
Improved context handling when weakrefs go stale.
First "barely working" port to SpiderMonkey 24.  There are a ton of conceptual issues, however,
involving compartments and the way requests are managed.   Plus many unit test failures.  So,
still a long way to go.
Added "enable_jit" keyword to Context constructor, defaults to True.