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.
var addendum2 = ReactDOMFeatureFlags.useFiber
        ? '\n    in tr (at **)' +
            '\n    in Row (at **)' +
            '\n    in table (at **)' +
            '\n    in Foo (at **)'
        : ' See Row > tr > #text.';
      expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(1)[0])).toBe(
        'Warning: validateDOMNesting(...): Text nodes cannot appear as a ' +
          'child of <tr>.' +
          addendum2,
      );
      var addendum3 = ReactDOMFeatureFlags.useFiber
        ? '\n    in table (at **)' + '\n    in Foo (at **)'
        : ' See Foo > table > #text.';
      expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(2)[0])).toBe(
        'Warning: validateDOMNesting(...): Whitespace text nodes cannot ' +
          "appear as a child of <table>. Make sure you don't have any extra " +
          'whitespace between tags on each line of your source code.' +
          addendum3,
      );
    });
    it('gives useful context in warnings', () => {
      spyOn(console, 'error');
      function Row() {
        return <tr />;
      }
      function FancyRow() {
        return <Row />;
      }
      class Table extends React.Component {