added function for discovery of temporary expression spikes

Based on Lamb et al (2003) Cell 114:323, genes showing a temporal
peak in expression can now be detected using the expression_peaks
function. This commit also improved the error checking in the
averaging function, and allows log transformation of data matrices
containing negative values.
Added Gene Set Enrichment Analysis (GSEA) function

Includes functions for the calculation of the signal to noise
ratio in data, calculation of the enrichment score for a given
pathway, and calculation of the permuted P-value for each pathway.

This required modification of the reorder_matrix function in the
cluster class, such that samples that are not assigned to any of
the specified groups are removed. This is achieved through a new
class function remove_sample(). For the permutation calculations,
a new function was also added to randomize the sample names.

Within the signal_to_noise() function, improved code for the
partitioning of all data into an arbitrary number of groups has
been included. This can be adapted for the ANOVA function at a
later date.