Add dns primitive

Added a DNS primitive that, per #76, checks for multiple responses, can do chaos queries, checks for second responses, and can send multiple queries in parallel.

I have also included an example experiment to show how to use the code.
They are being sent to the default resolver (dnspython figures this out for us). I had hoped that my comment in the constructor on the nameserver parameter was sufficient, but I can add more comments.