[Android] Refactor our notification channel definitions
This refactor means we now have two kinds of channels:
1. PredefinedChannel, with a resId defining channel name.
- This is what was previously known as ChannelDefinitions.Channel.
- Can be converted to a channel when required.
2. Channel - a drop-in replacement for Android's NotificationChannel.
- This is useful until we target O and can use NotificationChannel
directly.
- The ability to create a channel without a resId is required
to allow site channels to be created in future.
As part of this change it was necessary to convert the existing
ChannelsInitializerTest to an instrumented test, as we can no longer
access the resId now the code refers to Channels. Since the test is
now instrumented, it makes sense to test against the real
NotificationManager, especially to test the fragile code that uses
reflection.
Finally, I made the ChannelsDefinition class no longer instantiable,
as it didn't make much sense.
BUG=
700377,
716503
Review-Url:
https://codereview.chromium.org/2859233002
Cr-Commit-Position: refs/heads/master@{#471829}
Committed:
https://chromium.googlesource.com/chromium/src/+/19c23fdc0f568042d316dba0c9bd461e9e4e685b