[cluster] move GaussianMixture to separate module
[tools, markov_chain] '== None' -> 'is None'
(wip)[cluster] Add VBMerge algorithm, numerous bug fixes in GaussianInference

o initialization uniform: alpha wasn't initialized but update prematurely
o better way to set initial means
o nu update had extra +1
o log rho update in separate method,
o use math.log instead of np.log to avoid accidental broadcasting.
  Since it doesn't check for array sizes, it is slightly faster, too.
o proper outer product in _update_S

Todo:

o fix Gaussian inference test case
o lots of todos in variational.py
o test VBMerge prune() with lots of initial components
(wip) [variational] lower likelihood bound
(wip) [cluster] Complete variational Bayes and VBmerge likelihood bound

o bound computation stable but doesn't always increase => test case fails
o doc includes default values, dimensions of arrays
o split into E- and M-step, perform E step first to allow consistent bound computation
o regularize responsibility to avoid overflows in log(0)
o simplify prune with getattr
o _expect_log_p_Z simplified
o E step and M step identical except for overloading
o return mode of variational posterior as result
o remove clumsy (and false) caching of intermediate constants

Bug fixes:
o m0[k] -> m0
o second part of covariance added to _update_W
o fix signs in bound
o user right Dirichlet B and C
o alpha0 vector and scalar disentangled
[cluster] Improve tests and bugfix variational

o fix init of nu
o regularize N_comp to avoid inf
o replace some loops with einsum
o rigorous test of variational bayes (not VB merge)
[cluster]  - removed __iter because python automatically does what
             is written there when __getitem__ is defined
[cluster] Fix two bugs in variational

o independent copy of inv_W0
o check for improper precision matrices
o ensure symmetric positive definite sample covariance
o add 'slow' attribute to a unit test
(wip)[variational] Improve stability and usability of variational

o PEP8, default values in doc
o equation numbers to implementations
o add E step at the end of prune()
o add run() method that does convergence checking etc.
o rewrite _update_log_rho() stepwise for better stability and in-place modification
o reset prune test case to old init of nu, fails. Have to understand why.
[cluster] bugfix vbmerge finally

o correct q(Z) expectation in bound according to Bruneau's implementation in the R package vbmix
o store every part of the bound calculation for checking
o fix test case broken in previous commit with 'copy_weights' option in VBMerge
o check bound by hand for all but the part that was wrong :)
o check user input for nu
[doc/conf.py] version is now read off file _version.py
[cluster] Clean up variational

o sort methods alphabetically
o rename self.*expect* -> self.*expectation*
o improve text output