WIP feat(oauth): Add WebChannel support

@shane-tomlinson @ckarlof feedback?

- [ ] Need to check error reporting
- [ ] Need to fix localstorage WebChannel saving
- [ ] Tests
Since `RedirectChannel` requires a `redirect` and a `WebChannel` needs the tokenized data, let's just put both in the `data` field for `oauth_complete`. This will keep `WebChannel.send` clean, and only the `RedirectChannel` needs the `command === 'oauth_complete'` hack.