Multi-key joins

Allow specifying a join with more than one key, for example:

```ruby
g.v.join.
  key(:first_name) { |v| v[:first_name] }.
  key(:last_name) { |v| v[:last_name] }.
  join { |v| v.out(:hobbies) }
```