Fix common remove + #clear --> #remvoe on the backend

CommmonMethods#remove was calling clear as long as there is a backend object. 

Unortunately though, 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!