The UuidRole is mapped to a new data role which provides the item's
uuid base64 encoded. This is needed as the uuid will be passed through
the data engine and needs to be string convertable.
The HistoryModel provides the needed functionality to be hooked into
History. It's not setting up the chaining (that's implicit in a model)
and uses shared pointer. Both needs further adjustments in Klipper.