Handle modified displays in mustash.

Big CL that fixes many small things related to display information being
propagated when a display is modified. The primary change is that
ws::DisplayManager now handles OnDisplayModified() calls. This entails
the following steps:

1. The PlatformDisplay corresponding to the display is updated.
2. Mus sends an IPC to WM clients telling them the display has changed.
   This requires a new message in mojom::WindowManager and new method in
   WindowManagerDelegate.
3. Update the root ServerWindow for the display.
4. Mus sends an IPC to any other clients telling them the display has
   changed.

The ViewportMetrics class is moved from src/services/ui/ws/ to
src/services/ui/display so that it can be used in
PlatformScreenDelegate.

PlatformScreen now implements ui::DisplayController::StateController so
it can pick the display size.  A message is added to
mojom::TestDisplayController to trigger changing the display size. This
allows developers to try the functionality. An unused ash developer
keyboard shortcut is used to trigger changing the display size. This
shortcut is only temporary until settings are working.

Another small part of this change is the display insets are sent from
ash to PlatformScreen. This is tangentially related as it relies on
DisplayManager::OnDisplayModified() working.

BUG=641012

Review-Url: https://chromiumcodereview.appspot.com/2434923002
Cr-Commit-Position: refs/heads/master@{#426830}
46 files changed