moved dnscache (and test) to a subpackage

I'll be moving a few other things to their own packages, but want to keep the pull requests small, so this is the first.

In general thinking for subpackages I'll try to put the test with it so it can be treated totally separately. This one didn't need anything from walker/test/{helpers.go,mock.go}, so it was easy, but others might. I'm debating whether I should put some of the mock-type stuff into the core walker code... one the one hand it'll make it easy because even outside packages that use Walker can mock it to test stuff, but on the other it will clutter the API.

So the options are:
- Leave walker tests combined in the `test/` directory sort of as is?
- Put mocks and possibly other helps in `walker` package and export them?
- Put mocks and other stuff in a separate `walker/mocks` package?

Now that I've written them out I'm liking the last one. Thoughts?