We used to throw if event listener is not a function in Stack:

```js
ReactDOM.render(
  <h1 onClick={{}}>Hello World!</h1>,
  document.getElementById('container')
);
```

<img width="565" alt="screen shot 2017-08-08 at 3 41 08 pm" src="https://user-images.githubusercontent.com/810438/29077502-2646412e-7c50-11e7-8c99-3b7f6c0a2589.png">

Fiber silently ignores this.

I think we should throw. This would let us add support for objects (e.g. for passive listener configuration) if we want to in a minor rather than a major.
ReactDOM.render(<div />, container);
      expect(stubStyle.display).toEqual('');
      expect(stubStyle.color).toEqual('');
    });
    it('should update styles when `style` changes from null to object', () => {
      var container = document.createElement('div');
      var styles = {color: 'red'};
      ReactDOM.render(<div style={styles} />, container);
      ReactDOM.render(<div />, container);
      ReactDOM.render(<div style={styles} />, container);
      var stubStyle = container.firstChild.style;
      expect(stubStyle.color).toEqual('red');
    });
    it('should not reset innerHTML for when children is null', () => {
      var container = document.createElement('div');
      ReactDOM.render(<div />, container);
      container.firstChild.innerHTML = 'bonjour';
      expect(container.firstChild.innerHTML).toEqual('bonjour');
      ReactDOM.render(<div />, container);
      expect(container.firstChild.innerHTML).toEqual('bonjour');
    });
    it('should reset innerHTML when switching from a direct text child to an empty child', () => {
      const transitionToValues = [null, undefined, false];
      transitionToValues.forEach(transitionToValue => {
        var container = document.createElement('div');
        ReactDOM.render(<div>bonjour</div>, container);
        expect(container.firstChild.innerHTML).toEqual('bonjour');
        ReactDOM.render(<div>{transitionToValue}</div>, container);
        expect(container.firstChild.innerHTML).toEqual('');
      });