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
Add link to Apple's - Do Not Cast Pointers to Integers
KPGridClusteringAlgorithm: use delegation to abstract generation of cluster annotations from clustering algorithm
Remove KPGridClusteringAlgorithmConfiguration
Make it possible to subclass KPAnnotation as discussed in #18
Class annotationClass: weak->assign
Another fix of cluster grid not freed correctly
Temporarily add -Weverything and -Wno-objc-missing-property-synthesis
Remove alignment warnings
Clustering algorithm: reduce memory footprint by removing separate cluster grid storage
minor code readability tweaks
Replace CLLocationCoordinate2DDistanceToCoordinate with native MKMetersBetweenMapPoints
Remove #if DEBUG code
Review-driven readability changes
Merge branch 'dev' of github.com:itsbonczek/kingpin into dev
More readability changes
WIP algorithms work
README: better markup
README: add better-formed example of mapView:viewForAnnotation: