Remove chrome.* Function Instrumentation Inlining and Use a Separate Instrumented Object

Chrome rebinds all of the chrome.* functions during events like permission
updates (e.g. chrome.permissions.request will cause all chrome.* to rebind).
This has the effect of throwing away all of the instrumentation set up during
initialization.

The fix here removes all inlining instrumentation from chrome.* and introduces
instrumented.* which mirrors chrome.* only for the instrumented functions.

instrumented.* also delays the lookup of the function until execution time
in the event the functions are rebound by chrome.

BUG=164227

Review URL: https://chromiumcodereview.appspot.com/22647003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@216713 0039d316-1c4b-4281-b951-d872f2087c98
6 files changed