Version tracking

This PR adds the ability to store history of each document edits.
With each edits, each user will have the ability to:

- Compare changes with the latest version or with one of it's previous versions
- Rollback to one of the previous versions

@smebberson This is ready for review.
Should this be `var` scoped?