Add launcher icons for Crostini applications

This updates the Crostini launcher integration so that it includes the
icons. Icons are stored in the user's storage directory and the file path
for the icons is generated based on the app_id. We use the
CrostiniManager for requesting the icons from the Linux container.
Resizing of returned icons is performed if we do not get the size/scale
factor we requested from Linux.

Bug: 836044
Test: Verified icons load, handles scaling and app removal/addition
Change-Id: I37c4297af6219ddadc200598cec52d7c40140758
Reviewed-on: https://chromium-review.googlesource.com/1028588
Commit-Queue: Jeffrey Kardatzke <jkardatzke@google.com>
Reviewed-by: Nicholas Verne <nverne@chromium.org>
Reviewed-by: Timothy Loh <timloh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#554172}
11 files changed