If you attach a `ref` to an element using a string (`ref='foo'`) and use `ReactTestRenderer` you get the `"Stateless function components cannot be given refs"` warning

See https://github.com/facebook/react/issues/7371#issuecomment-237816352

This is because `getPublicInstance` returns `null` and `attachRef` requires that the instance be non-null in the warning invariant.

I think we can either return a simple instance instead of `null` or use some additional check in `attachRef` to see if we're dealing with `ReactTestRenderer`. The first option seems reasonable, given the comment in the current code: 

``` js
ReactTestComponent.prototype.getPublicInstance = function() {
  // I can't say this makes a ton of sense but it seems better than throwing.
  // Maybe we'll revise later if someone has a good use case.
  return null;
};
```

cc @spicyj 

inst.state = nextState;
    inst.context = nextContext;
    this._updateRenderedComponent(transaction, unmaskedContext);
    if (hasComponentDidUpdate) {
      if (__DEV__) {
        transaction.getReactMountReady().enqueue(() => {
          measureLifeCyclePerf(
            inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext),
            this._debugID,
            'componentDidUpdate'
          );
        });
      } else {
        transaction.getReactMountReady().enqueue(
          inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext),
          inst
        );
      }
    }
  },
  /**
   * Call the component's `render` method and update the DOM accordingly.
   *
   * @param {ReactReconcileTransaction} transaction
   * @internal
   */
  _updateRenderedComponent: function(transaction, context) {
    var prevComponentInstance = this._renderedComponent;
    var prevRenderedElement = prevComponentInstance._currentElement;
    var nextRenderedElement = this._renderValidatedComponent();