Flesh out the DataObject properties and methods

Now uses promises to delay the timeout It stores data needed for output.
toString() prints a friendly version.
Clean up randomTimeout

It looks better if we provide a default for randomTimeout. Adds a helper
randomTimeoutBetween().
Start timeout and return promise

After the array is returned we chain to the promise and out put the data
as it resolves.
Increase the data set