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)
if I understand correclty, this behaviour is expected during normal operation..
so I would not use Exceptions to deal with it... use return codes or similar