Create location fetcher

This pull request implements location fetching. `PPLocationFetcher` class is responsible for fetching the device's current location from Location Services. Whereas `PPGeocoder` class is responsible for reverse geocoding the coordinates contained in a `CLLocation` object.

`PPLocationFetcher` allows you to specify your desired accuracy for a location although it cannot guarantee that accuracy. The `desiredAccuracy` property behaves exactly the same as the `desiredAccuracy` property provided by the [CLLocationManager](https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/instp/CLLocationManager/desiredAccuracy) class.

In order to return a location with relatively good accuracy, `PPLocationFetcher` checks the [horizontal accuracy](https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocation_Class/CLLocation/CLLocation.html#//apple_ref/occ/instp/CLLocation/horizontalAccuracy) of a location returned by the Location Service against three different thresholds:

* `desiredAccuracy` = 100.0 meters
* `somewhatDesiredAccuracy` = 300.0 meters
* `lowestAcceptableAccuracy` = 500.0 meters

If the number of attempts to retrieve an accurate location exceeds __3__, `PPLocationFetcher` will settle for a location whose horizontal accuracy is lower than or equal to `somewhatDesiredAccuracy`. If it still cannot retrieve a location with `somewhatDesiredAccuracy`, it will accept one with `lowestAcceptableAccuracy` once the number of attempts exceeds __5__.

Future Improvements
---------------------------
It is possible that the location services might not return more than a couple of location updates if it can't get a fix on a satellite or if the device isn't moving. In that case, if the first few location updates don't satisfy the thresholds we've set, `PPLocationFetcher` might never return a location. One way of taking care of this limitation is:

* Return the last best location, if location services doesn't send updates before any one of the accuracy thresholds could be reached. We could use a timeout to force `PPLocationFetcher` to stop listening for updates from the location services which is important for not draining user's battery unnecessarily.