Implement micro-benchmarks via JMH

Here I add the micro-benchmarking module.
The purpose of the very first test (`StatementTest`) is to compare the performance of execution
```sql
select name from hr.emps where empno=?
```
via four approaches:
1) plain java foreach looping through employees in `HrSchema` and finding the required `name`
2) `executeQuery(String)` with using literal for employee id
3) `prepareStatement(...); ps.setInt(...); ps.executeQuery()`
4) `ps.setInt(...); ps.executeQuery()` -- cached `PreparedStatement`

Here are the results:
```
Benchmark                                  Mode   Samples         Mean   Mean error    Units
n.h.o.StatementTest.forEach               thrpt        10   130285,170    31122,871   ops/ms
n.h.o.StatementTest.executeQuery          thrpt        10        0,043        0,007   ops/ms
n.h.o.StatementTest.prepareBindExecute    thrpt        10        0,042        0,008   ops/ms
n.h.o.StatementTest.bindExecute           thrpt        10      177,867        4,508   ops/ms
```

Note that cached and fully JIT'ed `PreparedStatement` looks to be 1000 times slower that foreach loop, however it achieves not that bad rate of 180 ops/ms == 180'000 / sec

A particular test can be investigated as follows: `java -Djmh.stack.lines=10 -jar ./target/ubenchmarks.jar ".*bindExecute.*" -prof hs_comp,hs_gc,stack -f 1 -wi 5 -i 20` (this runs `bindExecute` test with stack profiling in 1 jvm fork with 5 warmup iterations and 20 measurement iterations)

Here is sample result (it looks like lots of time is spent in creating of `DataContext` and in `OptiqConnectionProperty.wrap`):
```
       Stack |   5,7%   RUNNABLE java.util.Hashtable.hash
             |                   java.util.Hashtable.get
             |                   java.util.Properties.enumerateStringProperties
             |                   java.util.Properties.stringPropertyNames
             |                   net.hydromatic.avatica.ConnectionConfigImpl.parse
             |                   net.hydromatic.avatica.BuiltInConnectionProperty.wrap
             |                   net.hydromatic.avatica.ConnectionConfigImpl.timeZone
             |                   net.hydromatic.avatica.AvaticaConnection.getTimeZone
             |                   net.hydromatic.optiq.jdbc.OptiqConnectionImpl$DataContextImpl.<init>
             |                   net.hydromatic.optiq.jdbc.OptiqConnectionImpl.createDataContext
             | 
             |   5,7%   RUNNABLE java.util.Hashtable.<init>
             |                   java.util.Hashtable.<init>
             |                   java.util.Properties.stringPropertyNames
             |                   net.hydromatic.avatica.ConnectionConfigImpl.parse
             |                   net.hydromatic.optiq.config.OptiqConnectionProperty.wrap
             |                   net.hydromatic.optiq.jdbc.OptiqConnectionImpl$OptiqConnectionConfigImpl.autoTemp
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.execute
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.execute
             |                   net.hydromatic.avatica.AvaticaConnection.executeQueryInternal
             |                   net.hydromatic.avatica.AvaticaPreparedStatement.executeQuery
             | 
             |   5,7%   RUNNABLE sun.util.locale.LocaleUtils.isAlphaNumericString
             |                   sun.util.locale.UnicodeLocaleExtension.isKey
             |                   java.util.Locale.getUnicodeLocaleType
             |                   java.util.Calendar.createCalendar
             |                   java.util.Calendar.getInstance
             |                   net.hydromatic.avatica.AvaticaResultSet.<init>
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.<init>
             |                   net.hydromatic.optiq.jdbc.OptiqJdbc41Factory.newResultSet
             |                   net.hydromatic.optiq.jdbc.OptiqJdbc41Factory.newResultSet
             |                   net.hydromatic.avatica.AvaticaConnection.executeQueryInternal
             | 
             |   4,5%   RUNNABLE java.lang.String.toUpperCase
             |                   java.lang.String.toUpperCase
             |                   net.hydromatic.avatica.ConnectionConfigImpl.parse
             |                   net.hydromatic.optiq.config.OptiqConnectionProperty.wrap
             |                   net.hydromatic.optiq.jdbc.OptiqConnectionImpl$OptiqConnectionConfigImpl.autoTemp
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.execute
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.execute
             |                   net.hydromatic.avatica.AvaticaConnection.executeQueryInternal
             |                   net.hydromatic.avatica.AvaticaPreparedStatement.executeQuery
             |                   net.hydromatic.optiq.StatementTest.bindExecute
             | 
             |   4,5%   RUNNABLE java.util.HashMap.addEntry
             |                   java.util.LinkedHashMap.addEntry
             |                   java.util.HashMap.put
             |                   net.hydromatic.avatica.ConnectionConfigImpl.parse
             |                   net.hydromatic.optiq.config.OptiqConnectionProperty.wrap
             |                   net.hydromatic.optiq.jdbc.OptiqConnectionImpl$OptiqConnectionConfigImpl.autoTemp
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.execute
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.execute
             |                   net.hydromatic.avatica.AvaticaConnection.executeQueryInternal
             |                   net.hydromatic.avatica.AvaticaPreparedStatement.executeQuery
             | 
             |   4,5%   RUNNABLE java.lang.String.toUpperCase
             |                   java.lang.String.toUpperCase
             |                   net.hydromatic.avatica.ConnectionConfigImpl.parse
             |                   net.hydromatic.optiq.config.OptiqConnectionProperty.wrap
             |                   net.hydromatic.optiq.jdbc.OptiqConnectionImpl$OptiqConnectionConfigImpl.spark
             |                   net.hydromatic.optiq.jdbc.OptiqConnectionImpl.createDataContext
             |                   net.hydromatic.optiq.jdbc.MetaImpl.createCursor
             |                   net.hydromatic.avatica.AvaticaResultSet.execute
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.execute
             |                   net.hydromatic.optiq.jdbc.OptiqResultSet.execute
```