Reworked the way that Data works.

Now DataSource is DataStore, with the idea being that anything which produces data will
stick it into a DataStore, but the DataStore looks the same whatever the data is.

It provides a current set of data (which is assumed to not be processed), and optional loading of
all historic data if necessary

Scripts now decide whether they can run on the current set of data, in which case it is
cleared and added to the historic data