Add support for queries with earth_distance

Previously we only supported earth_box which does a bounding box check
with distances and so does not allow for direct 'as the crow flies'
distance checks between two points.

Here we introduce the EarthDistance helper to wrap the earth_distance
function. It expects two inputs which resolve to sql functions which
will return 'earth' objects which is the Postgresql earthdistance
extension's type for wrapping up a latitude & longitude.

We then add an ExactDistanceExpression which exposes this functionality
like the DistanceExpression does for the earth_box. We rely on the
EarthDistanceExpression helper and so extend that to be able to take a
non-SqlNode as a value as the common usage will be to specify the
distance to test against as a simple float.
Merge branch 'earthdist'