Create GObject trait and move connect method to there

Resolves #118.

All examples are working.

There's also another way of handling this. We can have something like this:

```rust
pub trait Signals<S:Signal> {
    fn connect(&self, &s: S);
}
```

and implement this for every type. I think this is a bit better because it allows us to have more precise types, for example, we can't connect a callback to a signal that the object won't fire. If you like this idea I think I can implement.