Cover graph visualization at dashboards.khanacademy.org/cover-graph, along with relevant parser to generate the json as well as third-party js libraries

Test Plan: Currently the graph looks pretty nice but the specialZoom when a node is clicked is a bit strange. Right navigation panel (as well as many things) could be significantly prettier...
New cover graph layout using dagre (DAG renderer) library, search is more visual, re-renders the connected components of all the points which fall under the search query

Test Plan: Looks fine locally
Smarter sizing of search results so that graphs fit neatly in the viewport, user sees "no matches" if query returns no results, smart colors to indicate height of exercise in tree, various other css tweaks, and commenting

Test Plan: Looks fine locally
Committed the wrong file earlier...

Test Plan: Looks fine locally
Cover graph visualization at dashboards.khanacademy.org/cover-graph, along with relevant parser to generate the json as well as third-party js libraries

Summary:
New cover graph layout using dagre (DAG renderer) library, search is more visual, re-renders the connected components of all the points which fall under the search query

Smarter sizing of search results so that graphs fit neatly in the viewport, user sees "no matches" if query returns no results, smart colors to indicate height of exercise in tree, various other css tweaks, and commenting

Committed the wrong file earlier...

Test Plan:
Currently the graph looks pretty nice but the specialZoom when a node is clicked is a bit strange. Right navigation panel (as well as many things) could be significantly prettier...

Looks fine locally

Looks fine locally

Looks fine locally

Reviewers: jace

Differential Revision: http://phabricator.khanacademy.org/D3233
Added home button so user can go back to original graph after zooming in

Test Plan: Looks fine locally
CSS style nits, cover_graph.js computes the graph on the fly now, fixed issue with links between ancestors and descendants not showing

- Instead of using the output of parse_cover_graph.py, cover_graph.js makes an API call on the fly to grab the nodes and edges needed, so we won't need cover_graph.json or parse_cover_graph.py anymore
- "Connected component" meant all direct ancestors and descendants earlier, but it didn't include edges between, say A and C in the graph A->B->C if we searched for B
- Changed a bunch of id's to classes and fixed other css style issues

Test Plan: Looks fine locally
Nit fixes

- Commented on graph data structure and helper functions
- Style fixes like double instead of single quotes, braces for blocks, camelcase variable names
- Got rid of debugging code
- Got rid of parse_cover_graph.py
- Fixed comment in cover_graph.html

Test Plan: All code style fixes, so hopefully I didn't break anything :)
Added covers graph to dashboard index, tweaked sizing of home button

Test Plan: Looks fine locally