Refactor IAccessor so it takes in metadata

This winds up being a little complicated, in many cases where we use the
accessor we are passing it into D3 so it will just take a datum and index.

To accomodate these cases, we wrap the accessor in a closure that contains
the metadata prior to passing it into the D3 code.

Wound up splitting the .data call into three calls, .data, .metadata, .dataset.
Setting metadata has some performance implications, as discussed in internal comments.
Same flags will get used for setting accessors too (when I implement setters).
Renderers now implement Renderer._paint() so we can teardown appropriately.

Also, rename some variables to use our new underscore-package-private convention.
Rename Renderer.dataArray to Renderer._data
Add more unit tests for the new IAccessor functionality.

Also stop using the IMetadata interface for the moment... need to
figure out how to use it in a good way.
Merge pull request #179 from palantir/refactor-accessor

Refactor IAccessor so it takes in metadata