added support for execution order for "Before" and "After" hook. closes #807

Since the original method was accepting varargs (```Object... args```) as parameter, there was almost no way to add new method with proper parameters, without breaking backward compatibility. 


Does Groovy have a literal syntax for longs like Java does? I.e. `500L`.

We could throw an error if you pass two or more ints and longs I suppose. There is still a danger that people would pass in `2000` hoping that would set the timeout, when in fact it would set the order (since `2000` is an int). But you have the same problem with your current implementation.

Alternatively we could break backwards compatibility and expect a Map:

```groovy
Before([order: 5, timeoutMillis: 4000L, tags:["@tag1", "@tag2"]]) {
}
```

I don't mind too much breaking backwards compatibility if it is for a good reason.