PIMPL-style wrappers for generated bindings.

This CL pushes the existing structs and Array<T> into the background.
They get renamed with a "_Data" suffix, and the generated structs and
Array<T> become a class holding just a data pointer.

To prevent accidental mutation of a received struct/array, there are
two kinds of wrappers: Foo and Foo::Builder. Foo is readonly. Use
Foo::Builder to construct a Foo.

Given https://codereview.chromium.org/82913002/, it'll be possible
to make the Buffer* parameters optional. That will open up the
opportunity to pass |std::string| in place of |mojo::String| :-)

R=davemoore@chromium.org

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

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