DNS Lookup Caching

Fixes #29.
I don't think there will be a lock contention. The lock is protecting the cache access and cache access is very fast, considering caller worker threads are mostly i/o bound, the time they spend waiting on this lock would probably be negligible. So I would say this lock is fine.