Introduce InputDeviceTabletTool
Tablet tools are independent of tablets but the way our code is structured is that it assumes they are not. For example, the same tool can move between two different tablets.
This change introduces the InputDeviceTabletTool type which abstracts tablet tools. It allows to look up TabletToolV2Interface by just looking at the tablet tool pointer.
It also opens up "smarter" strategies to clean up stale tool objects.
Edited by Vlad Zahorodnii