Updated CStreamingMMD and CLinearTimeMMD with new formulas

CStreamingMMD is redesigned and most of the implementation details are
pulled up to this base from CLinearTimeMMD. This allowes implementation
of further streaming MMD classes (B-test) easier since the subclasses
now have to define only two methods on their own, namely

 - compute_stat_est_multiplier()
 - compute_var_est_multiplier()

All Streaming-MMD subclasses now support two ways for statistic and
variance under null estimation, namely

 - S_UNBIASED, S_INCOMPLETE (for statistic)
 - WITHIN_BLOCK_PERMUTATION, WITHIN_BLOCK_DIRECT (for variance)

The sanity of the existing unit-tests in linear time mmd are checked
against python code that can be found at
https://github.com/lambday/shogun-hypothesis-testing/blob/master/btest.py
Also, new unit-tests are added for different number of samples and
incomplete type statistic. Kernel selection unit-tests are adjusted
with local-machine computed results.
The formula for Q is correct, but one also needs to pool the X and Y data together within each block and then randomly split it (in the same proportions) when estimating variance (i.e., these h_{i,j}_{a,b}) would be computed on permuted data for estimating variance and on original data for computation of the statistic. I may be missing something but I don't see that happening here? See cheat sheet, Setup II (within-block permutation).