A memory leak appears to have been introduced to server side rendering in React 15.3.0 when `NODE_ENV != production`.

With `NODE_ENV=development`, the size of the heap grows proportionally to the number of requests received. This was confirmed in both Node v6.3.0 and v0.12.3. Also it was **confirmed to work correctly in React 15.2.0**.

_To reproduce_: Start the app configured for server-side rendering with `NODE_ENV=development` (or just not production). Inspect the V8 heap before and after hitting your server with a number of requests. I used [heapdump](https://github.com/bnoordhuis/node-heapdump) to take the snapshots and [wrk](https://github.com/wg/wrk) to hit my app with a bunch of requests. Load the snapshots into chrome dev tools profiler. Here is what I see:
<img width="1278" alt="screen shot 2016-08-02 at 12 47 34 pm" src="https://cloud.githubusercontent.com/assets/7452924/17343291/b8922606-58b1-11e6-9891-b6dbc22edc29.png">

The culprit appears to be the [react children mutation warning](https://github.com/facebook/react/blob/328fc75bc910032ff37dc9d93429fb14b476bd0d/src/renderers/shared/hooks/ReactChildrenMutationWarningHook.js#L18). `onBeforeComponentMount` saves a reference to a given React Element and all of its props in the `elements` object, but the cleanup steps `onComponentHasMounted` or `onComponentHasUpdated` are never called on the server and thus the `elements` object is ever growing.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**
react - 15.3.0
react-dom - 15.3.0
node - 6.3.0 || 0.12.3
express - ^4.0.0

'in `undefined` being returned. If you need to access the same ' +
        'value within the child component, you should pass it as a different ' +
        'prop. (https://fb.me/react-special-props)',
        displayName
      );
    }
  };
  warnAboutAccessingRef.isReactWarning = true;
  Object.defineProperty(props, 'ref', {
    get: warnAboutAccessingRef,
    configurable: true,
  });
}
/**
 * Factory method to create a new React element. This no longer adheres to
 * the class pattern, so do not use new to call it. Also, no instanceof check
 * will work. Instead test $$typeof field against Symbol.for('react.element') to check
 * if something is a React Element.
 *
 * @param {*} type
 * @param {*} key
 * @param {string|object} ref
 * @param {*} self A *temporary* helper to detect places where `this` is
 * different from the `owner` when React.createElement is called, so that we
 * can warn. We want to get rid of owner and replace string `ref`s with arrow
 * functions, and as long as `this` and owner are the same, there will be no
 * change in behavior.
 * @param {*} source An annotation object (added by a transpiler or otherwise)
 * indicating filename, line number, and/or other information.
 * @param {*} owner