Fix an issue that external protocol in subframes are not handled on Android

On android, an InterceptNavigationResourceThrottle is used to intercept all the UrlRequests.
However, this throttle only works if the resource type is main frame.
As a result, any external protocols embedded in subframes cannot launch other intents.
This change addresses the above issue by:
1. revive the ExternalProtocolHandler code path on android so that subframe requests will be handled.
2. passing transition type to ExternalProtocolHandler so android implementation can decide whether to show intent picker.
3. Adding back ExternalProtocolObserver on android, use the common code path to prevent intent from launching without gesture.

BUG=364522

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

Cr-Commit-Position: refs/heads/master@{#328570}
26 files changed