Notebook signatures must be unique

Rather than assigning a static notebook signature, this has been replaced with a randomly,
deterministically generated notebook signature. This is currently done off of the dataset's id,
encoded through trans (so it's the unique hash, and not just the number), however this will need to
be exchanged for history_id whenever we have access to that.