refactor address resolution

This pull-request introduces a new callback called `get_address`, that fixes the two shortcomings of the existing `inet_aton` callback listed below.

* cannot override the port number
* cannot support protocols other than IPv4 (e.g. IPv6, unix socket, ...)