Optimize d3.keys

Native JavaScript Object.keys() method is heavily optimized for the specified task (http://jsperf.com/object-keys-iteration/20).  The native method does not perform on the object's prototype and as such, I have concatenated the object's keys with that of the prototype's keys because based on previous implementation it seems the keys of the prototype is also desired. Concatenation is also more optimized than pushing (http://jsperf.com/concatperftest/6).
What are you trying to gain by `!!map`? Objects are always truthy, and in fact there is [no trivial way](http://stackoverflow.com/questions/4994201) to determine if an object is empty.