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)`.

It is possible that compilers optimize this, so whatever I write below may not matter.

In a for-loop, I always use the pre-increment operator for the for-loop variable. The reason is that the post-increment operator would create a new object, which is not the case for the pre-increment operator.
So I would write the for-loop as:
```
for (int i = 1; i < 5; ++i)
```