Separate vertex/edge ops, provide different options

@eparejatobes `help wanted` 
I've implemented some cool ops and I wanted to separate them to have independent alternatives (+ [gremlin ones](https://github.com/ohnosequences/scarph/pull/8#issuecomment-43820718)).
Do you have any ideas on how to do it nicely? I've tried something, but couldn't really get rid of the dependency on the "self" instance (i.e. we're extending `self.Rep`, but want to refer to other type members of `self`)