add ?-contained operator support

Resending for #187. Pls help review and merge. Thanks!

==============================
Currently it seems PgJDBC didn't support ?-contained operator escaping, which lead to some ?-contained operators, such as hstore's `?&`/`?|` and ltree's `?`/`?~`/`?@` and so on, can't be used in PreparedStatement.

This pull request try to resolve the problem.

How to use it?
double mark the `?` when passing a raw sql to connection's prepareStatement method, as below:
```java
st = conn.prepareStatement("SELECT 'Top.Collections.Pictures.Astronomy.Stars'::ltree ?? '{\"*.Astronomy.*\"}'::lquery[];");
```
Then PgJDBC won't treat the `??` as parameter placeholders, and will restore it back to `?` before sending to postgres server.

Note: the offset will be set a value outside of array length when it's the last line