Confirm-to-quit: Add menu setting to enable the feature

On Mac, confirm-to-quit is a feature that is enabled with a menu item
in the global menu bar.  On Windows and Linux, this menu bar doesn't
exist, so instead it's put in the settings menu, above the "Exit"
entry.

There's still some debate about whether the setting should go in the
settings menu or in chrome://settings [1], so this may end up not being
the final place for it.  But either way, most of these changes are
still necessary.

In addition, this CL also
* Adds localized strings for Win/Linux
  - The Mac ones won't work due to the difference in the shortcut
    (Cmd+Q vs Ctrl+Shift+Q) and terminology (quit vs exit).
* Moves chrome/browser/ui/cocoa/confirm_quit.h to chrome/browser/ui so
  that some constants etc can be shared between Mac and Win/Linux.
* Adds metrics for the Win/Linux impl.
* Changes PrefNameRegistrar to unregister observers when PrefService
  is destroyed.  This was necessary to prevent a crash when the user
  presses Ctrl+Shift+Q and then closes Chrome using the close button
  while the bubble was showing.  This also fixes some log spam like
  "Pref observer found at shutdown" that used to get printed out in
  all debug builds during browser shutdown.

[1] https://docs.google.com/presentation/d/1JDRUtKAXSON_13Ef9VbURk3L7yonzH9dDCj90BZDA6w/edit?usp=sharing

BUG=243164
R=sky

Change-Id: I671276a41b7878531ea216281f7c994914e1ddf3
Reviewed-on: https://chromium-review.googlesource.com/1099689
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567443}
21 files changed