Fixed problem where the criteria functions were masking each other inside
VertexHopGraphProvider.
Moved VertexHopGraphProvider to the API project and fixed some problems
inside it.
Added null checks and edge endpoint validation to the various
topology classes to avoid crashes when the graph providers return
vertex and edge sets that aren't 100% consistent.