Implement context menus for App List + App Service

It re-uses the existing AppContextMenu, ArcAppContextMenu,
CrostiniAppContextMenu and ExtensionAppContextMenu code. Making an App
Service abstraction was considered, but rejected as not worth it. For
example, the shelf's context menu differs from the launcher's context
menu, even for the same app, so the bulk of the *_context_menu.cc code
is essentially idiosyncratic UI code for the launcher (aka app list).

Some broader concepts (e.g. is it a platform app, is it an uninstallable
app), rather than an explicit serialized context menu model, could be
factored into the App Service. That work is reserved for future commits.

Also remove the ExtensionAppContextMenu::set_is_platform_app method, as
it's really a constructor argument.

Also clean up some double-calls at two GetAppContextMenu call sites.

BUG=826982

Change-Id: I0f9afad47f8de145b391f6dfa9f51ec9085f17b2
Reviewed-on: https://chromium-review.googlesource.com/c/1404761
Commit-Queue: Nigel Tao <nigeltao@chromium.org>
Reviewed-by: calamity <calamity@chromium.org>
Reviewed-by: Dominick Ng <dominickn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621910}
14 files changed