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

**What is the current behavior?**
I got this warning: `Warning: Extra attributes from the server: preserveAspectRatio,viewBox` during client side hydratation when my react tree contains mixed case attributes such as these svg ones.

**What is the expected behavior?**

No warnings because there are no difference between server and client attributes.

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

**React 16.0.0-rc.2**
This worked on 15.*

This seems to happen because the attribute name is put to lowercase here: https://github.com/facebook/react/blob/6552519a211c3e43e3f6cf5b2237c90ae515d423/src/renderers/dom/fiber/ReactDOMFiberComponent.js#L901
but not in the set here:
https://github.com/facebook/react/blob/6552519a211c3e43e3f6cf5b2237c90ae515d423/src/renderers/dom/fiber/ReactDOMFiberComponent.js#L915
As the set removal is done with the lowercased attribute:
https://github.com/facebook/react/blob/6552519a211c3e43e3f6cf5b2237c90ae515d423/src/renderers/dom/fiber/ReactDOMFiberComponent.js#L1011
it stays in the `extraAttributeNames` set and I got wrongly the previous warning.
it('should error reconnecting different text in two code blocks', () =>
        expectMarkupMismatch(
          <div>{'Text1'}{'Text2'}</div>,
          <div>{'Text1'}{'Text3'}</div>,
        ));
    });
    describe('element trees and children', function() {
      it('should error reconnecting missing children', () =>
        expectMarkupMismatch(<div><div /></div>, <div />));
      it('should error reconnecting added children', () =>
        expectMarkupMismatch(<div />, <div><div /></div>));
      it('should error reconnecting more children', () =>
        expectMarkupMismatch(<div><div /></div>, <div><div /><div /></div>));
      it('should error reconnecting fewer children', () =>
        expectMarkupMismatch(<div><div /><div /></div>, <div><div /></div>));
      it('should error reconnecting reordered children', () =>
        expectMarkupMismatch(
          <div><div /><span /></div>,
          <div><span /><div /></div>,
        ));
      it('should error reconnecting a div with children separated by whitespace on the client', () =>
        expectMarkupMismatch(
          <div id="parent"><div id="child1" /><div id="child2" /></div>,
          
          <div id="parent"><div id="child1" />      <div id="child2" /></div>, 
        ));
      it('should error reconnecting a div with children separated by different whitespace on the server', () =>
        expectMarkupMismatch(
          
          <div id="parent"><div id="child1" />      <div id="child2" /></div>,