WIP: dns support (initial pass)

seems weird to need to add this.  also consider using crypto.random for any dns use cases?