[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
[markov_chain]  - bugfix in _get_log_rho_metropolis_hastings
[markov_chain] - bugfix: merge between log_target and indicator corrected