Optimize d3.{map,set}.

Rather than always escaping keys with a null-prefix, only escape keys that can conflict with built-in properties (either on Object, d3_Map or d3_Set). By only prefixing these special keys, we can avoid the cost of constructing new strings in the common case.

To check whether a key is special, we check whether it is in an empty map instance. In addition, keys that are already null-prefixed must be prefixed a second time to correctly unescape.
Large values is where this really makes a difference (see [Underscore discussion](https://github.com/jashkenas/underscore/pull/1888#issuecomment-59098225))

http://jsperf.com/underscore-vals/3