distribution freezing

Distribution freezing added. Distribution.freeze() and
Distribution.thaw() can be called to prevent training from updating the
parameters of the distribution. Most likely this will be through
State.distribution.freeze(). A model function
Model.freeze_distributions() and Model.thaw_distributions() can be
called to freeze or thaw all distributions in the model. You can also
pass "freeze=True" into the distribution initiation parameters, as such:
NormalDistribution( 5, 2, frozen=True ).