Introduce WebPluginContainerBase to abstract WebPluginContainerImpl.

Many classes in web/ take a dependancy on WebPluginContainerImpl, in some cases
this dependency is cyclic. In order to break this dependency we introduce a new
temporary abstraction WebPluginContainerBase, that derives from PlugingView,
WebPluginContainer and ContextClient.

Classes that were taking a dependency on WebPluginContainerImpl now take a
dependency on WebPluginContainerBase. In cases where there we methods that
were only defined in WebPluginContainerImpl we make them pure virtual in
WebPluginContainerBase and override them in WebPluginContainerImpl.

As WebPluginContainerImpl is garbage collected, we move this to
WebPluginContainerBase and define a virtual trace method.

The intention is for this abstraction to be temporary, once we move all of the
dependencies into core/ we can remove it.

I put the new class in core/exported as it derives from WebPluginContainer.

BUG=712963

Review-Url: https://codereview.chromium.org/2886113002
Cr-Original-Commit-Position: refs/heads/master@{#472810}
Committed: https://chromium.googlesource.com/chromium/src/+/303acce5cc18d95d46342bd089e06957841bc21b
Review-Url: https://codereview.chromium.org/2886113002
Cr-Commit-Position: refs/heads/master@{#473111}
17 files changed