Move dates to query
Move inputs to an args object
Move rawDates processing to the query object
Object versioning
Dynamically figure out which parts of the cache need to be updated.
Allow object rawDates to filter the rawDates coming from parents (i.e. period)
Split random generation into separate Random Object
This allows the source random numbers to stay unchanged upon changes to correlation