Simplify initialization

- Extract init functionality in separate methods.
- Correct behavior for current location:
  If the user has neither yet granted nor denied access to his location,
  the map should be visible.
  To achieve this we initialize the map and then ask for geolocation.
  If granted we change the location.
- New public method `setCurrentLocation()` exposed which could be used
  to set the map to the user's current location at a later time.
- New public method `setMarkers()` exposed which could be used to
  add new markers to the map at a later time.