net: make Socket.connect() consistently asynchronous

`Socket.prototype.connect()` establishes a connection synchronously in some cases and asynchronously in others. This commit makes it consistently asynchronous. This commit also removes hard coded IPv4 addresses, and throws on bad inputs immediately, instead of potentially after an asynchronous
operation. Closes #8140