OF-2786: Openfire to use system-defined preferences for IPv6 over IPv4
When establishing an outbound connection, Openfire now prefers the IP family as defined by the order in which the operating system returns addresses.
OF-2786: Set up multiple, concurrent, outbound connections when establishing S2S
Following the "Happy Eyeballs" directive, have outbound S2S connections to a race to find the fastest connection.
OF-2786: Add new IP resolved based on Happy Eyeballs
This introduces a new utility class that resolves hostnames into IP addresses, as defined by the Happy Eyeballs algorithm.
OF-2786: Refactoring of DNS resolution utility classes
The implementation that is responsible for resolving an XMPP domain name in a set of socket addresses used a set of purpose-built utility classes. Over time, more and more were added, that each significantly overlapped.
This commit refactors these classes into two basic classes:
- `SrvRecord` - a (partial) representation of a DNS SRV lookup result that represents an _unresolved_ hostname for an XMPP service
- `ResolvedServiceAddress` - a representation of a result of resolving a SrvRecord into an IP address and port.
These replace most other classes, leaving most of them in deprecated state for backwards compatibility.
No major functional changes are intended to be introduced by this commit.