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
STYLE POLICE :cop: this isn't python plo - `wasConnected`