Strenghten location provider logic

If the user prefered provider is not available, fall back to
LocationManager.PASSIVE_PROVIDER, which is always available.

NOTE: it is yet to be determined if we want to completely
      kill the service if location services are disabled.