Add working ST_Distance fn for weighted graphs.

This adds ST_Distance for weighted graphs. Distances may be calculated
in the following scenarios:
* d(source, destination)
* d(source, *)
* All distances requested in a source-destination table.

The weight column name is an optional String argument. If omitted, the
graph is considered unweighted. (But don't omit it for now, since this
has not yet been implemented!)

The graph orientation is also an optional String argument, which may
take on the values
* 'directed'
* 'reversed'
* 'undirected'
If a graph is directed (or reversed), we may also specify individual
edge orientations by integers 1 (directed), -1 (reversed) or 0
(undirected) in a column named 'edge_orientation'. If the graph
orientation is omitted, it is assumed to be directed.

The unit tests cover the case of a weighted directed graph. It remains
to:
* implement for unweighted graphs
* write unit tests for the other cases
* finish the javadoc