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

Bug

**What is the current behavior?**

Consider the following code:

```js
const forwardRefComponentLike = function forwardRefComponentLike(_props, _ref) {
  return <span>FowardRef</span>;
};

const FowardRefComponent = React.forwardRef(forwardRefComponentLike, {});

const MemoOfFowardRefComponent = React.memo(FowardRefComponent);
```

The `MemoOfFowardRefComponent` component does not pick up the name of the ForwardRefComponent and is instead rendered in devtools as:

```
 Anonymous [Memo]
    forwardRefComponentLike [ForwardRef]
```

<img width="262" alt="Screen Shot 2019-09-09 at 10 45 02 PM" src="https://user-images.githubusercontent.com/227292/64587241-81816d00-d353-11e9-8f20-873aa00f5076.png">

See this codesandbox for a demo and a comparison of how React.memo handles regular functional components: https://codesandbox.io/s/react-forwardref-and-memo-combo-33vx7

**What is the expected behavior?**

I would expect this to pick up the name of the thing passed into React.Memo, as happens for regular components

```
forwardRefComponentLike [Memo]
```

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

Tested with React 16.9.0.
pendingStringTable.forEach((value, key) => {
      operations[i++] = key.length;
      const encodedKey = utfEncodeString(key);
      for (let j = 0; j < encodedKey.length; j++) {
        operations[i + j] = encodedKey[j];
      }
      i += key.length;
    });
    if (numUnmountIDs > 0) {
       A
      operations[i++] = TREE_OPERATION_REMOVE;
       T
      operations[i++] = numUnmountIDs;
       F
       T
       S
      for (let j = pendingRealUnmountedIDs.length - 1; j >= 0; j--) {
        operations[i++] = pendingRealUnmountedIDs[j];
      }
       Fill in the simulated unmounts (hidden Suspense subtrees) in their order.
       (We want children to go before parents.)
       They go *after* the real unmounts because we know for sure they won't be
       children of already pushed "real" IDs. If they were, we wouldn't be able
       to discover them during the traversal, as they would have been deleted.
      for (let j = 0; j < pendingSimulatedUnmountedIDs.length; j++) {
        operations[i + j] = pendingSimulatedUnmountedIDs[j];
      }
      i += pendingSimulatedUnmountedIDs.length;
       T
      if (pendingUnmountedRootID !== null) {