Updated Symbol test to also check defineProperty

This updates the Symbol test to check that symbols can be used as keys
in Object.defineProperty arguments, not just in bare assignments. This
doesn't change any of the test's historical results, though.
Check for ES5 Object methods before using them

This updates the Symbol and Object#__proto__ tests so that ES5 methods
are either not used, or checked for existence beforehand.

Note that Object#__proto__ still requires
Object.getOwnPropertyDescriptor outright, simply because it's impossible
to verify that it is indeed an accessor property on Object.prototype
(instead of just special syntax) without it.
Improved the Promise test

In order to get the Promise test to work, I needed to implement
asynchronous test result writing. To do this, test functions may now,
instead of returning true/false, instead at some point call
asyncTestPassed(), which is a function provided by the testing
environment that registers the test as passed regardless of execution
order. build.js has been updated to provide such a function, as has the
node.js test runner.

The historical results have not been re-verified using this updated test
yet.
Added Promise.all and Promise.race tests

Again, the results for these are naively copied from the main Promise
test.
Fixed a bug in the Node test script
Implemented browser results interpolation

Now, if a result from a browser's version is not different from that of
its previous version, the result need not be recorded in the data files.
Instead, build.js will copy the result over automatically.
I've thus cleared out all unnecessary lines from data-es6.js. This has
resulted in a large diff, but you may observe the es6/index.html diff to
see that little has changed w/r/t the output results.

Note: browsers are determined to be the same version by comparing their
"full" string. As a result, certain older Chrome versions now have the
"full" string "Chrome, Opera", even though they predate Opera 15.

ALSO:
* Fixed a few Chrome and Firefox results as per #239.
* Fixed some older Firefox results that referenced "firefox28" instead
of "firefox27" (which comprises both 27 and 28).
ES6: Added tests for each Proxy handler

This adds tests for the Proxy get, set, has, deleteProperty,
getOwnPropertyDescriptor, defineProperty, getPrototypeOf,
setPrototypeOf, isExtensible, preventExtensions, enumerate, ownKeys,
apply and construct handlers.
EJS support is inferred from the source.

Also fixes a few other results for old Firefox versions.

Sorry that this diff looks terrible, but if you run `git diff
--minimal`, it more accurately reflects the changes.
Added missing property names to the Reflect test
Added a Proxy.revocable test
Updated Proxy tests to multi-line comment strings

NOTE: this commit only updates data-es6.js.
Checks for proxy handler arguments

Proxy handler functions' standard arguments are now checked a bit more
thoroughly in the tests.

Also added a note about a Firefox bug regarding proxy inheritance.
Added negative iOS results for Proxy.revocable
Added 2 extra let tests

These tests check for the temporal dead zone, and correct for-loop
iteration bindings. They are distinct from the basic let-test, as they
represent more advanced or nuanced functionality.
Altered the TDZ test to include const

Both const and let are subject to the temporal dead zone.
Fixed a small bug

Also updated IE11 support for for-loop iteration scope.
Const test now checks that assignment is an error

Assigning to a const should be a syntax error. This commit does not
update the test results to match this stricter test, yet.

This also fixes tabs introduced in previous commits.
Updating const results

Almost everything fails this updated test by treating const reassignment
as a silent failure instead of a syntax error.
Updated TDZ test results

Also fixed a bug in the Node test script.
Fixed Traceur result for the let-for test

Also made the test's code less wide.
Added explanatory notes about let/const support