Fix common remove

CommmonMethods#remove was calling clear as long as there is a backend object. 

Unortunately thoguh, some backends don't have clear (like slots). Resulting in an error when trying to remove a slot.

All I really wanted to do is e8b7a44

The rest is collateral damage:

* first noticed that the common clear spec didn't actually test anything (it stubbed a method and then expected the object to respond to that method).. then saw that the one object that spec was executed for in fact did not even implement clear --> remove
* changed the dependencies of CommonMethods from isntance variables to methods as that is imo much better/more flexible
* got rid off `parent.contetns.delete` as that assumes too much knowledge about parent, substituted it with `parent.remove_child`
* used an approach to module testing... let me know what you think!
Gotta be cautious with this approach that we don't name the test classes the same/name scope them. If we call them `TestClass` we might reopen them and introduce unexpected side effects.

We could use `Class.new` here and assign it to a variable to work around this :)