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!
@PragTob Good points all on testing the module in isolation. I think I'll change the inspect specs.

On extend vs include...I agree that its ultimately the same thing to extend and test the Class object, or instantiate and test the instance. I didn't have trouble following the code. For people starting with Shoes and trying to understand the specs, I'm not sure what's easier: a one-line setup that's "tricky", or a mulitline setup that looks like the classes in the codebase.

What might be even simpler is just to define a class:

```ruby
class TestClass
  include CommonMethods
end

subject { test_class.new }

before :each do
  subject.stub #...
end
```

or even

```ruby
class TestClass
  include CommonMethods
  def parent; end
  def gui; end
end

subject { instance_double("TestClass", parent: parent, gui: gui }

```

@KCErb, I know you have been digging into the specs recently...do you have any input?