Allow a direct path's cost to be specified

This still defaults to a cost of 1, so it's not a real change.  Note
that I believe it's a C++ ABI change, though... :(.
Allow paths to be unordered

With this change I can close the loop on network generation: I can run
"ocn-neighbors" to produce a network, and then read that network back
in from the output file to operate on it in other ways.

There's a test case for this -- note that here the network is actually
produced by the DREAMER tools.