Reverting SERVER-9186 due to test failures
Revert "SERVER-9186: avoid storing properties on js objects in the getter interceptor"

This reverts commit 337b300277bbd104bb0012eecc09cc22bf091d8b.
SERVER-9066: avoid duplicate JS field names
SERVER-9213: remove v8 ResourceConstraints
SERVER-9230: fix issue causing persistent v8 objects not to be tracked
Use indexed rather than named Set() when converting to v8::Array

The meat of this change is in the Array case of mongoToV8Element.
mongoToV8() was removed since this was the only caller.

Conflicts:
	src/mongo/scripting/engine_v8.cpp
Speed up conversion of v8::Arrays to BSON

Two major improvements:
* Use BSONObjBuilder::numStr() to convert index to string (has global
     cache of strings for 0-99)
* Use indexed rather than named iteration over the v8::Array
SERVER-9267 Make readonly v8 objects use same getters as regular lazy objects

Also fixes SERVER-9251
SERVER-9385 Make sure _id fields are extracted from modified lazy V8 objects
SERVER-9089 Check for NULL BSONHolder
SERVER-8952 Add argument type checking to Timestamp constructor in Javascript shell
Get rid of "args" global in V8
Attach V8Scope to v8::Isolate's Data

Frees the accessor data up for other uses
Cache conversion of string literals to V8 Strings
Add V8String class to avoid copying v8::Strings into std::strings

Still need to copy once into v8::Utf8Value but this saves the second copy
SERVER-9605 Use correct string length in hexToBinData()

Do not use hard-coded length of 16 to process variable length hex string.
SERVER-9597: In JavaScript, only allow Mongo() to be called as a constructor
SERVER-9878 Add type checks to V8 C++ bindings

The main focus of this ticket is tightening up input validation in
our V8 bindings. Doing this required normalizing the way we create
custom types in JS that have special C++-driven behavior. All special
types now use FunctionTemplates that are attached to the V8Scope object.
This allows us to test if an object is of the correct type before using
it.

Other related tickets partially addressed:
SERVER-8961 Differences in argument validation of custom types between v8 and Spidermonkey
SERVER-9803 Handle regular expression parse errors without seg faulting

Conflicts:

	jstests/constructors.js
	src/mongo/scripting/engine_v8.cpp

Conflicts:
	src/mongo/scripting/v8_db.cpp
SERVER-8926 Remove extra error text and 'L' line number prefix
SERVER-10313: uassert if null char in js field names
SERVER-10313: uassert number conflict fix