Add param support to @GremlinGroovy

By adding an annotation that can retain the name names of parameters clients can write something like this:
```java
@GremlinGroovy("_().sideEffect{x=it}.out('created').in('created').filter{it['age'] == age}")
public Person getCoCreatorOfAge(@GremlinParam("age") int age);
```

This allows clients to create much richer frames and avoid having to write wrapper code.

There is an hack in there to preserve the current behaviour where ScriptException is thrown as a runtime exception. I think that this would be better as a new exception type. Let me know your thoughts on this.