Implement .size(), .empty() for d3.{set,map}

closes #1648.

I think ".empty()" is an ambiguous name. It could be taken to mean the action "empty this set/map" instead of the query "is this set/map empty?"