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.
@sejdino ah thanks I got it. I already did this in `compute_statistic_and_variance()` but wasn't sure about computing Q here. I think we can just use the same strategy here - first compute the statistic on the pooled data and then randomly split that data into p and q in the same proportions (could done via subsets similar to `compute_statistic_and_variance()` which adds a subset of randomly shuffled indices to access whole data from - then first B_x indices are considered to be from p and rest B_y are considered to be from q - mirrors the effect of splitting it in the same proportions) and recompute these h terms for covariance.

I'll send a patch for this next. Thanks a lot for your comment :)