744 - Projectors w/data arg takes 1st datum - area/line 

Close #744.
I think clarity is more important than concision vs verbosity. 
Putting aside the question of function name for the moment, I think this would be clearer if instead of modifying the original attrToProjector, we made a modified copy. Ie
```
newAttrToProjector = {};
d3.keys(oldAttrToProjector).forEach((attr: string) => 
  newAttrToProjector[attr] = ....
```
Then it will be clearer to see what this function is doing ... explicitly returning data is almost always better than stealthily causing side effects