Refactor the TabbedArea component

Use `key` instead of array index, this allows Tabs to be reordered
without updated without needing to working the new `activeIndex`.

Use render functions instead of pushing to arrays stored on the
component, this is more consistent with the other components.

Removed `utils#isArray()` should be able to rely on an es5 environment
since React itself requires this.
@see http://facebook.github.io/react/docs/working-with-the-browser
.html#browser-support-and-polyfills