Remove Profile dependency from ExtensionFunction

This instead creates new variants of ExtensionFunction for Chrome APIs,
which need Profile, and uses them for any API that needs to access
Profiles.

TBR=sky@chromium.org
BUG=297942

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231406 0039d316-1c4b-4281-b951-d872f2087c98
Fix trace event ECHO_TO_CONSOLE

ECHO_TO_CONSOLE was broken because now every TraceEvent needs to be
in the buffer. Now use a small ring buffer instead of the original
discarding buffer. Also allow output to console when a duration
event ends but the original event has been recycled.

BUG=311558
TEST=TraceEventTestFixture.EchoToConsole

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231407 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 231407