multiplex clustering

The pull request contains the second part of the FeatureFinderMultiplex algorithm. The multiplex filtering results (red in first screenshot) are grouped to clusters corresponding to different peptide pairs (same colour in second screenshot). The pull request is based on #868 and #880.

LocalClustering contains a general purpose clustering algorithm. The dimensions of individual clusters are assumed to be much smaller than the dimension of the entire dataset. The problem is therefore reduced to a local clustering problem. The clustering algorithm can be used for peptide quantitation, RT-alignment or feature linking. Cluster and HashGrid2 are auxiliary classes.

In MultiplexClustering the LocalClustering algorithm is applied to the multiplex filtering output of #868. Each final cluster contains all profile/peak data for one specific peptide multiplet.

![s1](https://cloud.githubusercontent.com/assets/6149805/3540804/73c7b31e-0846-11e4-8005-9e204d2c3cec.png)
![s2](https://cloud.githubusercontent.com/assets/6149805/3540807/77cf13f8-0846-11e4-9ea3-699310401ad2.png)
@timosachsenberg I can combine point_indices_, property_A and properties_B_ in a new struct DataPoint (int point_index, int A, int B). But then A is stored multiple times, although it is by definition the same in each cluster.