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!
Maybe this link to the specs works: [clickety click](https://github.com/shoes/shoes4/pull/747/files#diff-28ee35f1598deb5672f35c13cf2c93bcR3)

I whole heartedly agree that it is unusual, it seemed most pragmatic to me at the time. Plus including a module in a class and then testing an instance of it is really the same as extending an Object itself. Though really unusual.

So about module testing in general, personally I don't like the approach of taking one concrete class/object that includes the module to test it. That object/class might override the methods at some point and introduce test failures (for instance with `Shoes::Rect` and other we almost certainly want to include dimensions information in inspect/to_s or both). Plus I then need to worry about setting that object up although I don't need it.

I like testing a module in isolation as I can just stub/create the methods that I need. Also this helps me see exactly what that module depends on (Modules should depend on as few methods/things as possible). For instance here I see that just to have remove my module needs methods like `parent` and `gui`, which in turn respond to `remove_child` and `clear`. 

About taking a test_object and extending it.. here is an alternative that includes it but well.. dunno:

```ruby
let(:test_class) {Class.new {include CommonMethods}}
subject {test_class.new}

before :each do
  subject.stub #stub the methods/objects the module depends
end
```

That's probably a bit clearer although a bit more work, which is a tradeoff I'm almost always happy to make.

What do you say, should I put that in real code so we can see how it feels?

@jasonrclark ?