A port of Eric Lippert's graphs to Swift http://ericlippert.com/2014/10/30/graph-traversal-part-one/