We should be warning if a controlled component becomes uncontrolled, or vice versa.

I thought this was fixed in https://github.com/facebook/react/issues/5821, but apparently it was either not fixed for checkbox components, or maybe I subsequently broke it in https://github.com/facebook/react/pull/7003 (or similar).  Regardless, we should fix it.

Demo of case that should warn: https://jsfiddle.net/s4742gkk/

expect(console.error.calls.count()).toBe(0);
  });
  it('should not warn if radio value changes but never becomes uncontrolled', function() {
    var container = document.createElement('div');
    ReactDOM.render(<input type="radio" checked={false} onChange={() => null} />, container);
    ReactDOM.render(
      <input
        type="radio"
        value="value"
        defaultChecked={true}
        checked={false}
        onChange={() => null}
      />, container);
    expect(console.error.calls.count()).toBe(0);
  });
  it('should warn if radio checked false changes to become uncontrolled', function() {
    var container = document.createElement('div');
    ReactDOM.render(<input type="radio" value="value" checked={false} onChange={() => null} />, container);
    ReactDOM.render(<input type="radio" value="value" />, container);
    expect(console.error.calls.argsFor(0)[0]).toContain(
      'A component is changing a controlled input of type radio to be uncontrolled. ' +
      'Input elements should not switch from controlled to uncontrolled (or vice versa). ' +
      'Decide between using a controlled or uncontrolled input ' +
      'element for the lifetime of the component. More info: https://fb.me/react-controlled-components'
    );
  });
  it('sets type, step, min, max before value always', function() {
    if (!ReactDOMFeatureFlags.useCreateElement) {
      return;
    }