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.