The backend specific_analyses.frame_order.uf.simulate() function performs all data checks required,
prepares the output file object, assembles the frame order parameter values and pivot point, and
creates a copy of the structural object object with the ensemble collapsed into a single model.
All this data is then passed into the new lib.frame_order.simulation.brownian() function. This
initialises all required data structures and the structural object. The main loop of the simulation
is also implemented, taking snapshots at every fixed number of steps and terminating the loop once
the total number of snapshots are reached. The snapshot consists of copying the original unrotated
structural model and rotating it into the new position. The rotation is currently the identity
matrix.
The old specific_analyses.frame_order.geometric.create_distribution() stub function has been
deleted.