Generalise some algorithms to arbitrary graphs
Implement additional algorithms.

* Added k-neighbourhood (with min, max, avg)
* Added computation of min,max,avg in- and out-degree.
* Cleaned up the implementation to be more in line with boost graph