Refactored CD and added normal CD functionality.
Finished BaseCD, adding a _get_positive_phase and _get_negative_phase.  VariationalCD now derives more directly from BaseCD.
Added _initialize_chains method to BaseCD and refactored _get_negative_phase to use that method.  The intention is to have PCD use the same _get_negative_phase and have its own _initialize_chain method.
Must remember to change the output of the updates though to reflect differences between CD and PCD.
Maybe put positive_phase and negative_phase back into CD, because they are minimally wrapping and don't seem to be doing anything important anymore.
Changed RBM tutorial to use VariationalCD.
Added tests for BaseCD and VariationalCD.
Continued refactor of DBM costs, focused on testing CD and VariationalCD.  Everything is ok, except hidden biases, where the positive and negative parts of the gradients check out, but their difference is lower than the variance due to samplign.