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.