Enforce ScriptForbiddenScope for user scripts.

ScriptForbiddenScope used to trigger a fatal assert if Blink tried to
execute script in a forbidden scope. This was problematic because
plugins often tried to run scripts inside these scopes.

To prevent these crashes, AllowSuperUnsafeScripts was added as an opt
out to allow plugin-triggered scripts to execute script anyway in these
dangerous contexts. This lead to bugs like https://crbug.com/367210,
where something that should be "impossible" wasn't.

In order to prevent random code from having to work around edge cases
that only happen when script shouldn't even be running, the entry points
for executing user script have been updated to first check if scripting
is forbidden. If it is, they just return undefined or an empty object as
appropriate.

A followup patch will attempt to apply a similar approach for handling
internal scripts.

BUG=363099,371084

Review URL: https://codereview.chromium.org/648423003

git-svn-id: svn://svn.chromium.org/blink/trunk@183650 bbb929c8-8fbe-4397-9dbb-9b2b20218538