feature-detect for ES6 Map, Set, WeakMap and WeakSet

This feature detect shows whether the new collections constructors for ES6 are supported: Map, Set, WeakMap and WeakSet.

Chrome implements all 4, but hides 2 behind a flag. Firefox implements 3.

[Polymer requires WeakMap](http://www.polymer-project.org/docs/start/platform.html), so detecting this may allow us to skip loading the poly-fill in upcoming browsers.

Part of #1170.