zb: use a structure for connection credentials
Use a structure instead of a hashmap to ease credentials reading.
This has some clear usability advantages, as well as documentation purposes.
The drawback is that we ignore any undefined "." keys (I haven't seen those), and addition of keys will be ABI break. The two are probably uncommon, and can be solved by callers by implementing their custom proxy using either a different struct or the old hashmap.