<!--
  Note: if the issue is about documentation or the website, please file it at:
  https://github.com/reactjs/reactjs.org/issues/new
-->

**Do you want to request a *feature* or report a *bug*?**

feature

**What is the current behavior?**

When `react-dom` is loaded from CDN like `<script src="https://cdn.jsdelivr.net/npm/react-dom@16.12.0/umd/react-dom.development.js"></script>`, `react-refresh` failed to inject hook into devtools.

I've created a related issue here: https://github.com/pmmmwh/react-refresh-webpack-plugin/issues/13

We should find a way to invoke `injectIntoGlobalHook` function from `react-refresh/runtime`, however this file is in cjs format so we cannot currently do this in a simple way.

**What is the expected behavior?**

I'd like `react-refresh` to publish runtime as a umd bundle so we can reference it from CDN and put it before `react-dom`'s `<script>` element, then invoke `injectIntoGlobalHook` in the right place.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**

- `react-dom`: 16.12.0
- `react-refresh`: 0.7.0
render(() => OuterV2);
      render(() => OuterV1);
      expect(container.firstChild).toBe(el);
      expect(el.textContent).toBe('2');
      expect(el.style.color).toBe('red');
      
      render(() => {
        function Hello() {
          const [val, setVal] = React.useState(0);
          return (
            <p style={{color: 'blue'}} onClick={() => setVal(val + 1)}>
              {val}
            </p>
          );
        }
        $RefreshReg$(Hello, 'Hello');
        
        return Hello;
      });
      expect(container.firstChild).not.toBe(el);
      const newEl = container.firstChild;
      expect(newEl.textContent).toBe('0');
      expect(newEl.style.color).toBe('blue');
    }
  });
  it('should not consider two forwardRefs around the same type to be equivalent', () => {
    if (__DEV__) {
      let ParentV1 = render(
        () => {
          function Hello() {