Use value types for class and type in DNS entries to make them immune to parameter order bugs

I just spent a few hours debugging why I was getting garbage responses from my embryonic netty-based DNS server, and found it was because I had CLASS and TYPE reversed when passing them to `DnsResource`'s constructor.  Having two `int` parameters next to each other which mean very different things is dangerous and exactly what Java types are there to help avoid.

So that nobody else has this problem, I've created this patch which adds two classes, `DnsType` and `DnsClass` which are wrappers for the protocol values (and also have names).  Includes tests which pass and patches the rest of netty-dns to use them.
We could validate this in the constructor of `DnsClass`?