Stores mapposition between sessions

* Stores mapposition between session
* Rearrange how location client in used
* preemptively fetch location in initactivity for new users
* location related refactoring plus adding tests
Should we always deactivate location updates when there is a stored location (every time after first launch)? Or should it only happen during routing? How does the user re-activate location updates? Should we call `app.activateMapLocationUpdates()` from `myPosition` click handler in `MapFragment`?