Fix common remove

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!
Actually have become a fan lately of doing `Class.new` for these type of locally defined testing classes now that you mention it. Simple enough to define it through `let` at the top of the spec too, which neatly manages the lifetime, etc without muddying the namespace.

That said, this is also pretty clear and not that likely to get redefined/opened so not hung up on changing it unless you feel inclined.