explicit delegation in Widget to app instead of method_missing

This is a follow up to #608 

It's a bit more complicated with widgets... I included a comment about why - open for different solution strategies:

```ruby
          # we set app 2 times because widgets execute most of their code
          # straight in initialize. I dunno if there is a good way of setting
          # an @app instance variable before initialize is executed. We could
          # hand it over in #initialize but that would break the interface
          # and people would have to set it themselves or make sure to call
          # super so for not it's like this.
          # Setting the ref on the instance is important as we might have
          # instances of the same widget in different Shoes::Apps so each one
          # needs to save the reference to the one it was started with
```