Linear Algebra Directed Clustering

This PR adds a clustering coefficient measure for directed graph.  Currently, this PR uses the adjacency matrix representation to calculate clustering coefficient, and as such, it leverages numpy to do all the calculations and sits in the linear algebra module.  Using numpy, it's possible to write the formula in a manner very similar to that used in the original reference.

I also added two tests to show that in the undirected case, the module gives the same answer as the clustering coefficient function already present in networkx.

Possible improvements to this PR include the use of sparse matrix throughout, which however would preclude the use of syntax mirroring that of the paper.
You can avoid storing the individual lengths. Also, `iterkeys` should not be used because it does not exist in Python 3.

```python
tot = 0
cnt = 0
for node_1, data_1 in all_pairs.items():
    for node_2, data_2 in data_1.items():
        if node_1 != node_2:
            tot += data_2
            cnt += 1
avg_path_len = tot / cnt
```