title: Apollo + React Router 4 SSR issue
body: <p>Not sure if this is an issue with React Router v4, the React Apollo client or my implementation.</p>
  
  <p>But with <code>&lt;ApolloProvider&gt;</code> as the top-level HOC, i.e:</p>
  
  <pre><code>const ComponentsWithData = await getDataFromTree(
    &lt;ApolloProvider client={apolloClient}&gt;
      &lt;StaticRouter location={ctx.request.url} context={route}&gt;
        &lt;App /&gt;
      &lt;/StaticRouter&gt;,
    &lt;/ApolloProvider&gt;,
  );
  
  const html = ReactDOMServer.renderToString(ComponentsWithData);
  </code></pre>
  
  <p>... I get:</p>
  
  <blockquote>
    <p>Warning: Failed prop type: Invalid prop <code>children</code> of type <code>array</code> supplied to <code>ApolloProvider</code>, expected a single ReactElement.
        in ApolloProvider
    Error React.Children.only expected to receive a single React element child.</p>
  </blockquote>
  
  <p>And flipped around, with React Router's <code>&lt;StaticRouter&gt;</code> as the top, i.e.:</p>
  
  <pre><code>const ComponentsWithData = await getDataFromTree(
    &lt;ApolloProvider client={apolloClient}&gt;
      &lt;StaticRouter location={ctx.request.url} context={route}&gt;
        &lt;App /&gt;
      &lt;/StaticRouter&gt;,
    &lt;/ApolloProvider&gt;,
  );
  </code></pre>
  
  <p>... I then get:</p>
  
  <blockquote>
    <p>A <code>&lt;Router&gt;</code> may have only one child element</p>
  </blockquote>
  
  <p>Rendering works fine in the browser (with React Router's <code>&lt;BrowserRouter&gt;</code>), but fails on the server.</p>
  
  <p>It also works well in React Router v3 due to doing all of the route matching <em>outside</em> of the React hierarchy, and not declaratively inside of it.</p>