MAINT: Add more verbosity to optimize.check_gradient function
ENH: Add random sampling method to gamma node.
TST: Add test for rotating Gaussian ARD arrays.
BUG: Fix CGF in the rotation method of Gaussian ARD arrays

Rotate method was incorrect for Gaussian arrays with more than one
variable axes. The update of CGF in the rotation of Gaussian ARD arrays
did not take into account other variable axes. Now, CGF is multiplied by
the product of variable axes that were not rotated.
MAINT: Remove old un-used code from Gaussian ARD array

New implementation of rotate_plates has replaced the old one which has
been lying there un-used. Cleaning the code by removing it.
ENH: Add atol and rtol keyword parameters to TestCase.assertAllClose
ENH: In optimize.check_gradient, handle zero gradients properly
BUG: Fix speed-up rotations for Gaussian ARD arrays.

Rotation transformations for speeding up VB learning of Gaussian ARD
arrays contained several bugs when using the transformations for
variables with multiple variable axes or plate axes. In addition, alpha
hyperparameter was not handled properly unless it had plates only for
the rotated variable axis. This collection of bugs should now be fixed
and RotateGaussianArrayARD can be used for large range of different
model blocks.
TST: Add unit tests for speed-up rotation of Gaussian ARD arrays.

These unit tests check that the rotation bound is computed correctly and
that the gradient is correct. These checks are performed also for the
plate rotation. Tests are in test_transformations module.
DEMO: Add command line options to PCA demo

PCA demo (bayespy/demos/demo_pca.py) can be run as
    python demo_pca.py <options>
with several command line arguments, such as dimensionality of the data
or the latent space and whether to use speed-up rotations or not.
DEMO: Add command line options to LSSM demo

Linear state-space model (LSSM) demo (bayespy/demos/demo_lssm.py) can be
run as
    python demo_lssm.py <options>
with several command line arguments, such as dimensionality of the data
vectors or the latent space of the model and whether to use speed-up
rotations or not. It is highly recommended to use rotations, otherwise
it may take a very long time to reach convergence.
ENH: Improve computations for plate rotation of Gaussian ARD arrays.

In the rotation speed-up of Gaussian ARD arrays, some moments can be
computed only once per optimization/iteration. This has now been
utilized better for plate rotation. It is possible to choose whether to
compute those moments at the beginning of the optimization (precompute
flag) or at each iteration step. The computations are performed a bit
differently depending on which method one chooses, but usually it is
better not to pre-compute but instead compute them once during each
iteration. If the rotation dimensionalities for both Q and R are small,
and X has other large axes that are not in alpha, then precomputation
might be useful.