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/

it('sets value properly with type coming later in props', function() {
    var input = ReactTestUtils.renderIntoDocument(
      <input value="hi" type="radio" />
    );
    expect(input.value).toBe('hi');
  });
  it('does not raise a validation warning when it switches types', function() {
    var Input = React.createClass({
      getInitialState() {
        return { type: 'number', value: 1000 };
      },
      render() {
        var { value, type } = this.state;
        return (<input onChange={() => {}} type={type} value={value} />);
      },
    });
    var input = ReactTestUtils.renderIntoDocument(<Input />);
    var node = ReactDOM.findDOMNode(input);
    
    
    input.setState({ type: 'text', value: 'Test' });
    expect(node.value).toEqual('Test');
  });
  it('resets value of date/time input to fix bugs in iOS Safari', function() {
    
    if (!ReactDOMFeatureFlags.useCreateElement) {
      return;
    }
    function strify(x) {
      return JSON.stringify(x, null, 2);