[ISSUE-95] Send replies from the right source IP address

Fixes #95

I didn't test this enough, but lets see what you have to say about it :)
I tried to keep it as simple as possible.

This has to be tested with IPv6. I guess that IPv6 is not supported yet (shouldn't be too hard to add IPv6 support though), but first lets make sure it doesn't break it.
1. I didn't want to rewrite it too much, but here's what I had in mind:
Because DNS is a request-response protocol, can we make the handling of UDP requests and TCP requests the same?
i.e., you'll be dispatched with req, resp objects, once req is processed, you call resp.Write() with the response

2. Without the additional `setsockopt`, the OOB buffer is empty. Other than the memory overhead that you mentioned before, it doesn't really make a difference.
If the memory overhead is an issue (it'll probably be <128 bytes and not 1024 like it is right now), we could try to think of a way of solving this.
Why are you worried about this being enabled to 0.0.0.0 as well?

3. I mentioned that currently IPv6 is not supported, but it shouldn't break it (as I said, when the flags are missing, the OOB will simply be empty)
IPv6 support should be pretty simple (as much as adding another `setsockopt`), I just need some to help testing it

As for a test case, what would you like it to test? Because this affects _all_ requests, there's no point in testing the edge cases (like the one I presented in my Vagrantfile)