Do not use (^) in a fold, that's too expensive.

It's not really in a critical path, so it doesn't make a big difference, but it's better not to do it anyway.
Improve the lookup function in query. Not really in the critical path as the lists are small anyway, but it can help sometimes.
Revert wrongly commited change to lib/dns.mlpack
Better compare function in Name.Map
Improve canon2key again.

labelize actually just checks that the label are well-formed, so no need to allocate a list there (even if calling List.rev does that also).