**Do you want to request a *feature* or report a *bug*?**

bug

**What is the current behavior?**

componentWillUnmount for inner instances is never called.

Here are 2 (jest) tests, the first works, not the second.

```js
import React from "react";
import renderer from "react-test-renderer";

test("top level componentWillUnmount works", () => {
  let count = 0;
  class A extends React.Component {
    componentWillUnmount() {
      count ++;
    }
    render() {
      return <div />;
    }
  }
  const inst = renderer.create(<A />);
  inst.unmount();
  expect(count).toEqual(1);
});

test("inner componentWillUnmount works", () => {
  let count = 0;
  class A extends React.Component {
    componentWillUnmount() {
      count ++;
    }
    render() {
      return <div />;
    }
  }
  const inst = renderer.create(
    <div>
      <A />
    </div>
  );
  inst.unmount();
  expect(count).toEqual(1);
});
```

**What is the expected behavior?**

The two test above should pass. All component that are unmounted should have the proper lifecycle, whatever the nesting is.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**

React 15.4.0
render() {
        return <div ref="baz" />;
      }
    }
    ReactTestRenderer.create(<Baz />);
    ReactTestRenderer.create(<Foo />);
    expectDev(console.error.calls.count()).toBe(1);
    expectDev(console.error.calls.argsFor(0)[0]).toContain(
      'Stateless function components cannot be given refs ' +
      '(See ref "foo" in Bar created by Foo). ' +
      'Attempts to access this ref will fail.'
    );
  });
  it('allows an optional createNodeMock function', () => {
    var mockDivInstance = { appendChild: () => {} };
    var mockInputInstance = { focus: () => {} };
    var mockListItemInstance = { click: () => {} };
    var mockAnchorInstance = { hover: () => {} };
    var log = [];
    class Foo extends React.Component {
      componentDidMount() {
        log.push(this.refs.bar);
      }
      render() {
        return (
          <a ref="bar">Hello, world</a>
        );
      }
    }
    function createNodeMock(element) {