Tidy up the connect API

 1. Keep records out of it by making mandatory things arguments and
 accepting a list of optional things
 2. Give specs for a few things
 3. Remove the ability to provide an arbitrary (but not really
 arbitrary, since it used a gen_tcp-specific procedure) socket using
 `open/3`