Split OFDNSResolverDelegate into two delegates

These are different enough that it makes no sense to have them in one.
Having them in one means all methods are @optional and typos cannot be
caught by the compiler.