Shared storage
Introduce MKMapPoint pointers temporary storage.

This greatly reduces a number of temporary storage allocations.
Cleanup and re-annotate code
1.2-1.5x faster -[KPAnnotation calculateValues]
Tree building: faster enumerations

- Use pointer iteration on C level
- Use faster Cocoa's fast enumeration for NSArray of original annotations
Temporary annotation storage: C pointer iteration
KPAnnotationTree: finalize migration on C level

- Eliminate KPTreeNode class, use kp_treenode_t struct instead.
Relaxed implementation of mergeOverlappingClusters

- Cluster grid is now fully normalized to a cell size (now width and
  height also)
- A grid, based on clusters distribution for current viewport, is built.
  It is used in -mergeOverlappingClusters to reduce a number of distance
comparisons beetween clusters.
- Table-driven development technique is applied to reduce a number of
  adjacent cluster lookups for a given cluster. We only look for
clusters which have complementary distribution, the rest clusters are skipped.
- The key details of algorithm and underlying structures are annotated
  with explanatory comments.
Remove KPClusterDistributionQuadrantNone

- This state is very-very rare - its elimination allows us to write quadrant selection with less branching.
Tree building algorithm: one more optimization tweak
Tree building algorithm: reduce temporary storage size by factor of 2
Merge pull request #27 from stanislaw/post_work_on_tree_building

Extensive performance improvements for tree building and cluster merging.
Tree building: eliminate needless copying.

This is achieved by switching of temporary storage container on every level of depth.