Factor out StrictEqualityAssociativeArray from Broadcaster and test it
Add unit test for Utils.uniq
Add _getExtent to dataSource, with caching for perf optimization. Add tests.
Fix a definite typo in DefinitelyTyped. Follow up in #292
Change applyAccessor so it activates and applies the accessor
Modify Scale so it can autorange its domain (Scale.autorangeDomain).

This was accomplished by introducing the concept of a "Perspective", which is a
DataSource, Accessor pair. When Renderer.project is called, it registers the associated
Perspective with the Scale. The Scale thus has pointers to the data which backs it, so when
Scale.autorangeDomain is called it can determine the extent of all of its data. The scale
registers listeners with the DataSource, so it knows when it can update.

If Scale._autoDomain is set to true, then the scale will call autorangeDomain() when either
scale.domain() or scale.scale(x) is called. It will autorangeDomain only if the autoranged
domain is not up to date, which it determines by listening to changes in the datasource (or
noticing when its perspectives are changed).

Actually computing the data extent is handled on the DataSource object, which also maintains
a cache of computed extents to avoid multiple linear scans if autorangeDomain is called frequently.

Needs unit tests. Close #267 when merged.
Cleanup the code (at the expense of triggering multiple events per autorange)
Minor tweak to improve code readability
Code cleanup, add a comment
Add IDCounter microclass to Utils, and test it
Modify scale to use the IDCounter rather than local refernece counting logic
Add some unit testing for new scale functionality
Merge pull request #293 from palantir/0.8.0-refactor-scale

0.8.0 refactor scale
merging after dans changes.