Componentize the bad clock blocking page

This breaks the former BadClockBlockingPage into three parts:

1. security_interstitials::BadClockUI handles strings and commands.

2. security_interstitials::ControllerClient abstracts the functionality
   provided by the embedder to act on commands. ChromeControllerClient
   implements this functionality for Chrome. BadClockUI has a
   ControllerClient to ask to do its bidding.

3. BadClockBlockingPage implements InterstitialPageDelegate and has a
   BadClockUI, which it asks to handle strings, commands, and everything
   else not platform-specific.

(BadClockBlockingPage has a BadClockUI has a ControllerClient.)

Other embedders will:
- make their own analogs to the BadClockBlockingPage
- implement their own PlatformControllerClient that inherits from
  ControllerClient
- share the BadClockUI class

I also added security_interstitials::common_string_utils to hold string-
manipulation methods that I expect to reuse in the future for other
classes that are componentized.

BUG=488673

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

Cr-Commit-Position: refs/heads/master@{#362897}
17 files changed