make lookup functionality pluggable

We'd like to be able to override how a consumer queries from NSQLookupds.
I think this approach would also allow others to switch NSQLookupd for etcd, zookeeper,
etc.

This is still a WIP but I hope you can see where I'm going with this.
Suggestions and Criticism welcome.

cc @oliver-bitly @jehiah @mreiferson
If we keep this a method, we could check that the "delegate" fulfills one of the interfaces, or even return a list or count of the interfaces it does match, for debugging purposes. Maybe we don't really want to do that, just an idea.