Define Location id as String instead if int.

This pull request allows instanciating Location objects with an id that is not necessarly an integer.

  * Location.id attribute is of type String instead of int.
  * Define new Location constructors.
  * Migrate providers.
  * Unit tests are still functional.