Fix/distance spherical

This PR fixes the issue from https://svn.boost.org/trac/boost/ticket/10421

The first commit disables the generation of cartesian default strategy for distance(Point/Box) and distance(Box/Box) for non-cartesian CS. The default strategy is retrieved taking into account the CS of Geometries like in all other cases.

The second commit adds the distance(Point/Box) strategy for spherical CS. It should be optimized and tweaked (see the TODOs). It uses side_by_cross_track and distance_cross_track so calculates the same thing twice. For this as much reusable code as possible from those strategies should be extracted and reused in all of those strategies. For instance there are 2 implementations calculating the course(), returning different types. It should probably be unified into `bg::detail::course<CalculationAndReturnType>(Pt1, Pt2)`.

Sure I may change it, however I found this particular guideline not a very good one because IMHO in case of a multi-line condition it's more readable this way:

    if ( geometry::equals(p1, p2)
      || geometry::equals(p2, p3) )
    {
    }

than this:

    if (geometry::equals(p1, p2)
     || geometry::equals(p2, p3))
    {
    }

Not to mention more complex conditions.
What do you think?