A more robust JMH benchmarking set-up

Usage:
```
$ gradle benchmarks
$ java -jar rxjava-core/build/distributions/rxjava-core-0.17.2-SNAPSHOT-benchmarks.jar [...]
```

For example:

```
$ java -jar rxjava-core/build/distributions/rxjava-core-0.17.2-SNAPSHOT-benchmarks.jar -f 1 -wi 10 -i 10 -tu us -bm avgt

Benchmark                                  (size)   Mode   Samples         Mean   Mean error    Units
r.o.ObservableBenchmark.measureBaseline         1   avgt        10        0.003        0.000    us/op
r.o.ObservableBenchmark.measureBaseline      1024   avgt        10        2.764        0.051    us/op
r.o.ObservableBenchmark.measureBaseline   1048576   avgt        10     3104.088       49.586    us/op
r.o.ObservableBenchmark.measureMap              1   avgt        10        0.100        0.003    us/op
r.o.ObservableBenchmark.measureMap           1024   avgt        10        5.036        0.059    us/op
r.o.ObservableBenchmark.measureMap        1048576   avgt        10     6693.271      277.604    us/op
```

See https://github.com/Netflix/RxJava/issues/776 for more details.