Non-blocking Socket Connect

This replaces the existing, blocking connection implementation with non-blocking connection logic.

More (tests) to come.

cc @jch @schaary