NAT detect

Adds in some methods that determine if you are behind a NAT when connecting to a remote peer. Also prevents connection to loopback addresses
It might be easier for you to do it, since you can push direct to the repo. Maybe even make it take a multiaddr instead of a string