v0.0.2 -- Initial commit

v0.1.0 -- Fix to Hidden Markov Models, now pip installable.

v0.1.1 -- 
(1) Added .train as a wrapper for .from_sample for distributions. Now all
distributions and models have the same basic methods; .log_probability
to evaluate a symbol under the model, and .train to update the model based
on some observations. This will seamlessly allow you to put models as emissions
if you wish, such as having a GMM as an emission in your HMM.

(2) Fixed some unit tests. Since I changed how the training log improvement is
returned, the unit tests were slightly off.

(3) Made the FSM more FSM-y. Removed the need to specify a probability (internally
defaulting to 1, since it uses the same algorithms as the HMM). Still more work
to be done at some point.

(4) Finally added JSON reading and writing for models. Use <instance>.to_json() to get a
string representing the model or distribution, and <class>.from_json() to build
that object from a JSON formatted string. This remembers tied distributions/edges, but
does not remember summaries saved to states.

(5) BayesianNetwork is still under development. But now that I'm back, I'll be actively
working on it.

v0.2.0 --
(1) Bayesian Networks now work properly! Loopy belief propogation has been implemented,
stopping after either max_iterations, or until convergance determined by no distribution
changing by more than 0.001. KL divergence would be more appropriate, but more time
intensive as well.

(2) Factor Graphs have been explicitly added, as a part of this. You can use factor
graphs explicitly, documentation to come.

v0.2.1 --
(1) GMM log probability fixed to weight each distribution by its prior.

(2) MultivariateGaussianDistribution will now calculate the full covariance matrix by default, can pass in diagonal=True to only use the diagonal.

v0.2.3
(1) Changed GMM log probability to use sklearn.mixture's log probability for multivariate Gaussians with a full covariance matrix.
(2) Fixed error where HMM calls to freeze and thaw distributions crashed on silent states.

v0.2.4
FactorGraphs were not working properly. This was due to the wrong keys being returned by the ConditionalProbabilityTable.keys() function. What a lame error.

v0.2.5
Finite state machines changes to add keys on transitions, instead of weird in distributions. Significant portions of the code removed as unneccesary.

v0.2.6
Added restarting of finite state machines.

v0.2.7
Update functions added to ConditionalProbabilityTable and JointProbabilityTable. First step on updates for Bayesian networks and Factor Graphs.

v0.2.8
Update function added to Bayesian networks. 
