Basic test that a type implements a graph.
Template tests for whether type is a directed/undirected graph.
Rename Graph => IndexedEdgeList, make library functions generic.

  * Choice of name reflects that given to the corresponding
    graph implementation in igraph.

  * Library functions should now work with any graph satisfying
    the characteristics tested for by isGraph
Merge new template tests and generic code from 'master'.
Add new large-scale betweenness centrality calculation.

Confirms that cached Index Edge List performance is on
a par with (maybe even slightly better than!) igraph.