Blink-in-JS: Implement internal APIs exposed only to private scripts

This is the final part of the core infrastructure of Blink-in-JS. This CL implements internal APIs exposed only to private scripts. They are not visible from user's JavaScript. They are needed for moving XSLT and editing/ to Blink-in-JS.

Here is a summary of the IDL extended attributes around private scripts:

interface X {
  aaa();
  [ImplementedInPrivateScript] bbb();
  [OnlyExposedToPrivateScript] ccc();
  [ImplementedInPrivateScript, OnlyExposedToPrivateScript] ddd();
};

- aaa() is a normal DOM method implemented in C++. aaa() is exposed to both user's JavaScript and private scripts.

- bbb() is implemented in a private script. bbb() is exposed to both user's JavaScript and private scripts.

- ccc() is implemented in C++. ccc() is exposed only to private scripts.

- ddd() is implemented in a private script. ddd() is not exposed to user's JavaScript nor private scripts. V8X::ddd() is exposed to C++ so that Blink can invoke ddd() from C++.

In other words, we essentially need the following four kinds of APIs, and the two IDL attributes control the kind of each API.

- user's JS & private scripts => C++ (e.g., aaa())
- user's JS & private scripts => private scripts (e.g., bbb())
- private scripts => C++ (e.g., ccc())
- C++ => private scripts (e.g., ddd())

This design might be a bit confusing but this is the least confusing design we can come up with at the moment.

BUG=341031
TEST=fast/dom/private-script-unittest.html

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

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