Extend transaction

This adds some extensions for transactions, so we can do fancy things with them.

Lateron, this will enable us to write high-level-transactions, something like
```ruby
t.move terminal: "vim", left: 100
```

which compiles to a transaction which actually searches for all windows which run a "weston-terminal" with "vim" in it and moves them to the left.

@TheNeikos what do you think?