Implemented Restricted Boltzmann Machines

- Implemented RBMs with binary / Gaussian visible units
- Support for different types of visible units in the same RBM
- Training with contrastive divergence or persistent contrastive divergence
- Monitoring training progress using the reconstruction error or the pseudo-likelihood

@lisitsyn I wasn't sure which class I should derive CRBM from, so I derived it from CSGObject for now. It doesn't fit within CMachine since it's an unsupervised model. Any thoughts?