Use combined geodata and direction provider

We currently micro-manage the providers. For example, the direction and GPS providers may be started separately, leading to complicated code which also need to check the GPS speed before using the compass data, since we switch to the GPS provided global direction when in move.

This pull request unifies both handling, and systematically provide interested activities or fragments with combined data. The direction already takes into account the fact that the user prefers not to use the compass or that the device is moving.

It also reduces code duplication (provoked by the discussion in #3638).

Any strong feeling against this change?