When are onAdd, onRemove, and onNewDatablock called and what are their vars?
The only argument they have (aside from the standard argument (the object) for namespaces) is the object it is referring to.
::onAdd is called when a new object is created using this datablock.
::onRemove is called when an object using this datablock is deleted.
::onNewDatablock is called when an already existing object changes to this datablock.