Added a Clusterer file that contains a Clusterer and Cluster class.

Added some methods to OHClustEvaluation.py. In particular I added a method that
clusters will use as a comparator. The comparator for Clusters is set as a
static comparator that calls a lambda expression which passes necessary values
curried in OHClustEvaluation.

Added a new pearson function to the kernel pool that has different parameters
and slightly different implementation to account for looking up an isolate from
a list of isolate IDs (which are indices in the large isolate list)

Overall the approach to clustering done here is going to be that the list of
isolate data is maintained on a GPU. Whenever clusters are compared, each
isolate listed in each list of cluster isolates is looked up in the list of
isolate data and then a pearson correlation is computed. this correlation is
then atomically added to a single value maintained in global memory. Once the
kernel is complete the single value in global memory is copied back to CPU and
returned from the comparator function. The similarity between clusters is now
computed and clustering may continue.