graph-controller.js: Extract data-set.js,  abstract event listening.

Main goal was to extract DataSet class into (data-set.js).

In the course of doing so, I also felt that the event handling was getting
too complicated, so listening-pool.js was pulled out too.

TODO: Tests for listening-pool.js listening-pool.js.
TODO: node_modules/.bin/mocha test/mocha/md2d/graph-controller-spec.coffee fails still.
Move data-set to common/controllers for now.
code-cleanup and quick comment-review.
ListeningPool: fix D3 listener removal

.on("type") returns registered listener (if any)
.on("type", null) removes registered listener
Use DispatchSupport instead of jQuery events in DataSet class

Just for consistency with rest of the project.
DataSet: update model reference when a new model is loaded
data-set.js : remove useless comment.
graph-controller.js: ✔graph-controller-spec: register truncation handler

Passes the graph-controller-spec.coffee test.
Was missing one DATA_TRUNCATED handler.
GraphController.js : RedrawCurrentStepPointer now takes step argument.
GraphController.js : No longer passing event objects with our events.
data-set.js: Fix missing method _numberOfPoints();
data-set.js: use local delegate method for returning model property.
table-controller.js : JSHint suggested changes: var declarations & ===
table-controller.js : add getView() ➙

To be more compatible with GraphController, and to make testing easier.
table-controller-spec.coffee: (wip) pre-refactor, capture expectations.

TODO:  These tests were mostly copied from graph-controller-spec.coffee.

They aren’t all passing yet, but Its in progress.
remove graph-specific test items.
Provide X and Y labels in DataSet class
GraphController: if X/Y labels are undefined, get them from DataSet
Set "auto" as default value of Graph x/ylabel

"auto" means that label will be generated from model property
description.
Update grapher mock and tests