Fixed two bugs:
(1) JSObject::getPropertyNames() was releasing the array before the Java side had a chance to process the names
(2) Need to protect JS objects that are no longer referenced in the JS environment, but are still in use by the Java environment (and may be passed back to JS) from the JS garbage collector