Extract shell methods from ApplicationImpl into a base class, and pass this to Initialize() instead.

Also eliminates use of mojo::shell::mojom::Shell in favor of this base interface.

This means most code doesn't have to use ApplicationImpl - only the places that instantiate them.

TBR=rockot@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#374049}
213 files changed