Support multiple virtual servers
This adds support for multiple virtual servers in IBDNS.
With this new feature, it is now possible to listen on several sockets, while serving different information based on the socket that the client was talking on. This is done by declaring virtual servers, assigning sockets, but also zones or processing/defect configurations.
As a bonus, the zone file loading code is entirely refactored, helping fix issues like #21 (closed).
This merge request fixes #4 (closed).