Refactoring part I

- Handle clusteringEnabled: it is no longer a property of KPTreeController. Instead, now it is configured through a delegate method: `- (BOOL)treeControllerShouldClusterAnnotations`.
- The rule from Github conventions "Always declare memory-management semantics even on readonly" is applied to all KP classes.
- `_animateCluster:` was made a private method.
- Compiler warning flags `-Wall` and `-Wpedantic` flags are added to kingpin.xcodeproj to rigorize the kingpin development environment.
- Grid clustering algorithm is extracted to KPGridClusteringAlgorithm.
- The code of `performClusteringOfAnnotationsInMapRect:...` and
  `_mergeOverlappingClusters` was refactored to make the overall
procedure more clear, readable and testable.
- Tests for KPGridClusteringAlgorithm are written.
- KPGeometry.h file is introduced to serve as a container for
  geometry-related methods.
- Various parts of C-code were extracted to C functions to make general
  code of KPTreeController and KPGridClusteringAlgorithm more readable
and __testable__.
- A number of unit tests were added for KPGridClusteringAlgorithm and
  KPGeometry.
performClusteringOfAnnotationsInMapRect: fix coordinate types