Re-implementation of collapsed gibbs sampler handlers + cleaning

* re-implementation of collapsed gibbs sampler without handlers, based on sampling from factors only
* removal of Categorical Factors, because they can all be represented by Discrete Factors using DiscreteVar as child and/or parent type
* resolves issue #178
* small tests were conducted for training LDA and it worked
* still a little bit slow compared to the efficient LDA implementation, but at least as fast as previous implementation of collapsed gibbs sampling
I don't think this belongs here because variables with Tensor value are a special case.  What if someone wants to provide special handling for real-valued variables, would you add yet another argument here in that case?  I think such special considerations belong in a Handler, and if the user has application-specific efficiencies in mind, they should subclass a Hander, and give it to the GibbsSampler.