Refactoring, part I

- KPTreeControllerRework is created side by side with original KPTreeController.
- Clustering algorithm is abstracted and extracted to KPGridClusteringAlgorithm
- Test that ensures integrity of clustering algorithm is written.

commit 637ee0f4e024143437625c6921896507b01ac87b
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Mon Apr 21 17:20:39 2014 +0400

    Finalization work

commit 32efb634a48df5b88dc1d4300dce4177f05e6f2c
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sun Apr 13 02:50:20 2014 +0400

    Fix norm validation

commit edbb4985fc838fdc305f83d7a4b34f21c7bd1f1b
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sun Apr 13 02:43:04 2014 +0400

    testGridClusteringAlgorithmIntegrity finally works.

commit e636aa3e91f2a4995f3cb632dd6b52727370fbfc
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sun Apr 13 02:36:23 2014 +0400

    Better tests using NSArrayHasDuplicates

commit ab35d46cce3e484d90e18b79d6c6e4a61c255088
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sun Apr 13 02:09:30 2014 +0400

    MKMapRectNormalizeToCellSize()

commit 5bf243a18e5833a1b6198bf0b42c8ee32304d94f
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 23:26:37 2014 +0400

    BenchmarkReentrantResetResults()

commit 37519e1dfd263fe8b7cbb10068318f4829585442
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 23:19:58 2014 +0400

    Add BenchmarkReentrant helpers

commit 17fac040396b18d19c9da326c59bd2fbb9b35bfc
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 23:13:16 2014 +0400

    Add Benchmark helpers to TestHelpers

commit 479b000d33d4bc2f507c9c7754fa78bce45eaefb
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 23:02:27 2014 +0400

    Add small padding of two cells to each side of grid rect

commit 154dd0943381145c474e71bf8fd65427f7f7ddf7
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 22:50:31 2014 +0400

    Remove needless @mapFrame property

commit 0d99993d3a9cefdefd269bd6a2ab2dbd9b9d7113
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 22:41:34 2014 +0400

    Further abstraction of clustering algortihm #2

commit 1c8b6607da9e3b24122e591bc724632aa970e6eb
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 21:48:48 2014 +0400

    Further abstraction of clustering algortihm #1

commit 601f812e87a16ceb88e6e0537a397cb852e725a0
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 21:12:59 2014 +0400

    Abstract clustering algorithm from KPTreeController (ugly, but works)

commit 06fd2e3a9cf0fc529d78eda3afab670450d30adf
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 12:32:15 2014 +0400

    Do not enlarge visible map rect, just normalize it to a grid cell size

commit e5d7c1b31b46d3abeadb337a5e29b66ffdabe3e8
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Sat Apr 12 01:46:38 2014 +0400

    Disable old tree controller for now

commit 0dd6a5a1174778017a55bdb7c1e8d0f944996cb0
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Fri Apr 11 23:31:29 2014 +0400

    Tester: make the second controller to work with KPTreeControllerRework

commit 4468abc4cccd16ed4452a4779849a258aac3c1ff
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Fri Apr 11 22:35:07 2014 +0400

    KPTreeController: use configuration struct

commit 9e994f9e6b30246162e2b19d80090bfdec1f9e35
Author: Stanislaw Pankevich <s.pankevich@gmail.com>
Date:   Fri Apr 11 22:18:51 2014 +0400

    Introduce KPTreeControllerRework classes, revert KPTreeController to original pre-C state