Fix bug in edge_descriptor comparison

This switches the edge_descriptor type in adj_list<> from std::tuple to
a custom struct.
Small cleanups in line_graph() code
Fix ordering of motif vertex maps in motifs()
Fix stopping condition for shortest_distance() when maximum distance is given
Return trivial partition in is_bipartite() if graph is not bipartite