allow modifying query string on socket (re)open()

Allow setting a new query string on socket (re)open(). This is mainly to enable hinting to load balancers/proxies.
It may be discussed whether:
1) we should enable changing the entire URI on re-open or
2) the user should destroy and construct a new Socket per such reconnect (too heavy handed in my opinion).

For now I just added query string modification, we can discuss option 1.