Callback support for unbound reference and array arguments.

Because the callback object uses const An& for the type of the Run() function in argument forwarding, the code breaks for An=T& or An=T[].  This CL adds in code to modify the parameter type to remove duplicate references, and other fun.

BUG=35223
TEST=new unittests

Review URL: http://codereview.chromium.org/6718021

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