When a DataObject is deleted does it take care of removing any entries in a $many_many table or do I have to write my own functions in onBeforeDelete to take care of clean up?
You'll have to perform your own cleanup at this point. I believe we have a ticket in our open source tracker to make this automatic.
For now, write your own code to remove the relationships and any related objects if necessary.
Any update on this?